1 Overview
This markdown file contains supplementary materials for the manuscript “Variation in the production of te reo Māori opening vowel sequences”. It contains all code used for data selection, acoustic measurements and filtering, as well as the analysis and data visualisations. This document is structured as follows:
Section 2 loads the R packages used
Section 3 outlines the data selection and annotation procedure
Section 4 contains the code for measuring formats, pitch, intensity, and for for filtering the data laid out in §3.3 of the manuscript. This section contains a number of non-executable chunks, some of which require a LaBB-CAT account to run. They have been included for archiving purposes.
Section 5 contains the code for the fPCA analysis, which is described in §3.4 of the manuscript
Section 6 contains the code for filtering the duration data, which is described in §3.3.3 of the manuscript
Section 7 contains the code for the uPCA analysis and visualizations, which are presented in §4.1 of the manuscript
Section 8 examines the possibility that speakers with predominantly high uPC1 scores and predominantly low uPC1 scores have different monophthong spaces, and that the different trajectory we see between high and low uPC1 tokens are actually a reflection of these differences (Footnote 1 of the manuscript)
Section 9 contains the code for the regression analysis and visualizations, which are presented in §4.2 of the manuscript
Section 10 contains the code for the speaker intercept analysis, which is described in §4.3.1 of the manuscript
Section 11 contains code for the visualizations of monophthongs and sequence trajectories, plotted per speaker category, which are presented in §4.3.2 of the manuscript
2 Libraries
- Required libraries.
Click here to view code.
# Data manipulation and visualisation
library(tidyverse)
library(janitor)
library(formatR)
library(gganimate)
library(gridExtra)
library(grid)
library(ggrepel)
library(scales)
library(glue)
library(factoextra)
library(gridExtra)
library(geomtextpath)
library(sjPlot)
library(RColorBrewer)
#Measurements
library(nzilbb.labbcat)
library(rmdformats)
library(rPraat)
# Statistical analyses
library(nzilbb.vowels)
library(fdapace)
library(mgcv)
library(locfit)
library(itsadug)
library(qgam)
library(lme4)
library(lmerTest)
library(car)
library(emmeans)
# Other
library(here) # localised file paths
library(knitr)
library(kableExtra) # html tables when rendering
library(grateful) # write package citations at end of document
library(extrafont) # to use custom fonts in
library(xtable) 3 Data selection and annotation (Manuscript §3.2)
- Data from the MAONZE corpus: all tokens of opening sequences, and monopthongs which occur between two consonants
Click here to view code.
opening_seqs <- read.csv(here("public", "Data", "MAONZE_opening_seqs.csv"))
betweenConsonantsMatches <- read.csv(here("public", "Data", "betweenConsonantsMatches.csv"))
participant_info <- opening_seqs %>%
select(Speaker, participant_gender, category) %>%
unique()- Various functions for data selection
Function to remove punctuation and whitespace
Click here to view code.
remove_punctuation_whitespace <- function(string) {
# Use gsub to replace punctuation and whitespace with an empty string
gsub("[[:punct:][:space:]]", "", string)
}Functions to identify if vowel sequence is initial or final in the word
Click here to view code.
VV_initial <- function(word, vowel_sequence) {
return(substr(word, 1, nchar(vowel_sequence)) == vowel_sequence)
}
VV_final <- function(word, vowel_sequence) {
return(substr(word, nchar(word) - nchar(vowel_sequence) + 1, nchar(word)) == vowel_sequence)
} Function to identify if words are V-final or V-initial
Click here to view code.
V_final <- function(string) {
string <- tolower(string)
n <- nchar(string)
if (n < 1) {
return(FALSE)
}
last_char <- substring(string, n, n)
last_char %in% c("a", "e", "i", "o", "u")
}
V_initial <- function(string) {
first_char <- tolower(substring(string, 1, 1))
first_char %in% c("a", "e", "i", "o", "u")
}Function to identify sequences of three vowels
Click here to view code.
three_vowels <- function(word, vowel_sequence) {
pattern <- paste0("(?<=[aeiou])", vowel_sequence, "|", vowel_sequence, "(?=[aeiou])")
return(grepl(pattern, word, perl = TRUE))
}- Prepare Before.Match (previous word) data. Here we replace V: with vv in the Before.Match column. This is because colons <:> will affect the results when filtering instances where the previous word is vowel final (i.e. if a word ends with orthographic v:, it will not be considered vowel-final )
Click here to view code.
opening_seqs$Before.Match = str_replace_all(opening_seqs$Before.Match, "a:", "aa")
opening_seqs$Before.Match = str_replace_all(opening_seqs$Before.Match, "e:", "ee")
opening_seqs$Before.Match = str_replace_all(opening_seqs$Before.Match, "i:", "ii")
opening_seqs$Before.Match = str_replace_all(opening_seqs$Before.Match, "o:", "oo")
opening_seqs$Before.Match = str_replace_all(opening_seqs$Before.Match, "u:", "uu")- Exclude various vowel sequences using functions defined above
Click here to view code.
data_filtered <- opening_seqs %>%
#determine if the sequence is initial in the word
mutate(word_VV_initial = mapply(VV_initial,
Target.orthography,
Target.vowelCluster)) %>%
#remove punctuation from before matches, bcs can affect the results of prev_V (e.g various words end with . , which could mean it is not considered vowel-final )
mutate(Before.Match = remove_punctuation_whitespace(Before.Match)) %>%
#determine if the previous word is V final
mutate(prev_v = ifelse(sapply(Before.Match, V_final), TRUE, FALSE)) %>%
#if word_VV_initial = TRUE and prev_v = TRUE, filter it out
filter(!(word_VV_initial & prev_v)) %>%
#determine if the sequence is final in the word
mutate(word_VV_final = mapply(VV_final,
Target.orthography,
Target.vowelCluster)) %>%
#is the next word vowel initial?
mutate(following_V = ifelse(sapply(After.Match, V_initial), TRUE, FALSE)) %>%
#if word_VV_final = TRUE and following_V = TRUE, filter it out
filter(!(word_VV_final & following_V )) %>%
#determine if sequence occurs in seq of 3 vowels
mutate(three_vowels = mapply(three_vowels, Target.orthography, Target.vowelCluster)) %>%
#filter out three_vowels = TRUE
filter(!(three_vowels)) %>%
#filter out instances where seq occurs more than once
mutate(VV_occurence = str_count(Target.orthography, Target.vowelCluster)) %>%
filter(VV_occurence < 2) %>%
#filter out instances where the sequence is preceded by a long vowel
filter(!mapply(function(vowel, word) grepl(paste0(":", vowel), word),
Target.vowelCluster, Target.orthography))
#remove unnecessary columns
data_filtered <- data_filtered %>%
select(-word_VV_final, -following_V, -word_VV_initial, -prev_v, -VV_occurence, -three_vowels)- Save as the selected data as a .csv
Click here to view code.
write.csv(data_filtered, here("public", "Data", "opening_seqs_selected_data.csv"))4 Acoustic measurements and filtering
4.1 Formants (Manuscript §3.3.1)
The following code extracts praat measurements for the formants, and requires a LaBB-CAT account. Chunks are set not to evaluate, measurements can be read in from provided csvs below.
4.1.1 Sequences formant measurments
- Define URL + intervals, separate data by sequence
Click here to view code.
url <- "https://labbcat.canterbury.ac.nz/maonze/"
intervals <- c(.1,.2,.3,.4, .5, .6, .7, .8, .9)
ia = data_filtered %>% filter(Target.vowelCluster == "ia")
ua = data_filtered %>% filter(Target.vowelCluster == "ua")
oa = data_filtered %>% filter(Target.vowelCluster == "oa")
ea = data_filtered %>% filter(Target.vowelCluster == "ea") - /ia/ formant measurements
Click here to view code.
iaformants <-
ia %>%
mutate(nzilbb.labbcat::processWithPraat(
url,
MatchId,
Target.vowelCluster.start,
Target.vowelCluster.end,
window.offset=0.025,
paste(
praatScriptFormants(sample.points = intervals,
formants = c(1, 2)))))
write.csv(iaformants, here("public", "Data", "iaFormantsRaw.csv"))- /ea/ formant measurements
Click here to view code.
eaformants <- ea %>%
mutate(nzilbb.labbcat::processWithPraat(
url,
MatchId,
Target.vowelCluster.start,
Target.vowelCluster.end,
window.offset=0.025,
paste(
praatScriptFormants(sample.points = intervals,
formants = c(1, 2)))))
write.csv(eaformants, here("public", "Data", "eaFormantsRaw.csv"))- /oa/ formant measurements
Click here to view code.
oaformants <-
oa %>%
mutate(nzilbb.labbcat::processWithPraat(
url,
MatchId,
Target.vowelCluster.start,
Target.vowelCluster.end,
window.offset=0.025,
paste(
praatScriptFormants(sample.points = intervals,
formants = c(1, 2)))))
write.csv(oaformants, here("public", "Data", "oaFormantsRaw.csv"))- /ua/ formant measurements
Click here to view code.
uaformants <-
ua %>%
mutate(nzilbb.labbcat::processWithPraat(
url,
MatchId,
Target.vowelCluster.start,
Target.vowelCluster.end,
window.offset=0.025,
paste(
praatScriptFormants(sample.points = intervals,
formants = c(1, 2)))))
write.csv(uaformants, here("public", "Data","uaFormantsRaw.csv"))- Read in data if need be
Click here to view code.
eaformants <- read.csv(here("public", "Data", "eaFormantsRaw.csv"))
iaformants <- read.csv(here("public", "Data", "iaFormantsRaw.csv"))
oaformants <- read.csv(here("public", "Data", "oaFormantsRaw.csv"))
uaformants <- read.csv(here("public", "Data", "uaFormantsRaw.csv"))- Combine into a single data frame
Click here to view code.
allseqformants = rbind(eaformants,iaformants,oaformants,uaformants)- Make separate data frames for F1 and F2, pivot longer
Click here to view code.
allf1 = allseqformants %>% pivot_longer(c(f1_time_0_1,f1_time_0_2,f1_time_0_3,
f1_time_0_4,f1_time_0_5,f1_time_0_6,
f1_time_0_7,f1_time_0_8,f1_time_0_9),
names_to = "f1time",
values_to = "f1")
allf2 = allseqformants %>% pivot_longer(c(f2_time_0_1,f2_time_0_2,f2_time_0_3,
f2_time_0_4,f2_time_0_5,f2_time_0_6,
f2_time_0_7,f2_time_0_8,f2_time_0_9),
names_to = "f2time",
values_to = "f2")
alllong = allf1
alllong$temptime = allf1$f1time
alllong$time = as.numeric(substr(alllong$temptime, 11,11))
alllong$f1 = allf1$f1
alllong$f2 = allf2$f2- Remove NAs
Click here to view code.
alllong = alllong[is.na(alllong$f1) != TRUE,]
alllong = alllong[is.na(alllong$f2) != TRUE,]
alllong$f1 = as.numeric(alllong$f1)
alllong$f2 = as.numeric(alllong$f2)
alllong$time = as.numeric(alllong$time)- Save data frame
Click here to view code.
write.csv(alllong, here("public", "Data", "openningseqs_formants_all_long.csv")) We will return later to normalize the data.
4.1.2 Monophthong formant measurements
The following chunks extract midpoint values for each monophthong
- /i/
Click here to view code.
monoi = betweenConsonantsMatches %>% filter(Target.teAkaSegment == "i")
monoiformants <-
monoi %>%
mutate(nzilbb.labbcat::processWithPraat(
url,
MatchId,
Target.teAkaSegment.start,
Target.teAkaSegment.end,
window.offset=0.025,
paste(
praatScriptFormants(sample.points = 0.5,
formants = c(1, 2)))))
write.csv(monoiformants, here("public", "Data","monoiFormantsRaw.csv")) - /e/
Click here to view code.
monoe = betweenConsonantsMatches %>% filter(Target.teAkaSegment == "e")
monoeformants <-
monoe %>%
mutate(nzilbb.labbcat::processWithPraat(
url,
MatchId,
Target.teAkaSegment.start,
Target.teAkaSegment.end,
window.offset=0.025,
paste(
praatScriptFormants(sample.points = 0.5,
formants = c(1, 2)))))
write.csv(monoeformants, here("public", "Data","monoeFormantsRaw.csv"))- /a/
Click here to view code.
monoa = betweenConsonantsMatches %>% filter(Target.teAkaSegment == "a")
monoaformants <-
monoa %>%
mutate(nzilbb.labbcat::processWithPraat(
url,
MatchId,
Target.teAkaSegment.start,
Target.teAkaSegment.end,
window.offset=0.025,
paste(
praatScriptFormants(sample.points = 0.5,
formants = c(1, 2)))))
write.csv(monoaformants, here("public", "Data","monoaFormantsRaw.csv"))- /o/
Click here to view code.
monoo = betweenConsonantsMatches %>% filter(Target.teAkaSegment == "o")
monooformants <-
monoo %>%
mutate(nzilbb.labbcat::processWithPraat(
url,
MatchId,
Target.teAkaSegment.start,
Target.teAkaSegment.end,
window.offset=0.025,
paste(
praatScriptFormants(sample.points = 0.5,
formants = c(1, 2)))))
write.csv(monooformants, here("public", "Data","monooFormantsRaw.csv"))- /u/
Click here to view code.
monou = betweenConsonantsMatches %>% filter(Target.teAkaSegment == "u")
monouformants <-
monou %>%
mutate(nzilbb.labbcat::processWithPraat(
url,
MatchId,
Target.teAkaSegment.start,
Target.teAkaSegment.end,
window.offset=0.025,
paste(
praatScriptFormants(sample.points = 0.5,
formants = c(1, 2)))))
write.csv(monouformants, here("public", "Data","monouFormantsRaw.csv"))- Read in data if need be
Click here to view code.
monoiformants = read.csv(here("public", "Data", "monoiFormantsRaw.csv"))
monoeformants = read.csv(here("public", "Data", "monoeFormantsRaw.csv"))
monoaformants = read.csv(here("public", "Data", "monoaFormantsRaw.csv"))
monooformants = read.csv(here("public", "Data", "monooFormantsRaw.csv"))
monouformants = read.csv(here("public", "Data", "monouFormantsRaw.csv"))- Create combined data frame
Click here to view code.
monoformants = rbind(monoiformants, monoeformants, monoaformants, monooformants, monouformants)
monoformants2 = monoformants %>% filter(is.na(f1_time_0_5) == FALSE)- Remove outliers
Click here to view code.
monoformants2 <- monoformants2 %>%
rename(Speaker = Participant)
monoformants3 = left_join(monoformants2, participant_info, by = "Speaker")
prunedmono = monoformants3 %>% group_by(participant_gender, Target.teAkaSegment) %>%
filter(f1_time_0_5< mean(f1_time_0_5)+2.5*sd(f1_time_0_5),
f1_time_0_5> mean(f1_time_0_5)-2.5*sd(f1_time_0_5),
f2_time_0_5< mean(f2_time_0_5)+2.5*sd(f2_time_0_5),
f2_time_0_5> mean(f2_time_0_5)-2.5*sd(f2_time_0_5))
monophthongs = prunedmono4.1.3 Normalisation
This section uses Lobanov 2.0 code, taken from (Brand et al. 2021) supplementaries
- Standard Lobanov normalisation - calculate means across all vowels per speaker
Click here to view code.
monophthongs$F1_50 = monophthongs$f1_time_0_5
monophthongs$F2_50 = monophthongs$f2_time_0_5
summary_vowels_all_lobanov <- monophthongs %>%
group_by(Speaker) %>%
dplyr::summarise(mean_F1_lobanov = mean(F1_50),
mean_F2_lobanov = mean(F2_50),
sd_F1_lobanov = sd(F1_50),
sd_F2_lobanov = sd(F2_50),
token_count = n())- Lobanov 2.0 - calculate means per vowel and per speaker
Click here to view code.
summary_vowels_all <- monophthongs %>%
group_by(Speaker, Target.teAkaSegment) %>%
dplyr::summarise(mean_F1 = mean(F1_50),
mean_F2 = mean(F2_50),
sd_F1 = sd(F1_50),
sd_F2 = sd(F2_50),
token_count_vowel = n())- Get the mean_of_means and sd_of_means from the the speaker_summaries. This will give each speaker a mean calculated from the means across all vowels, as well as the standard deviation of the means
Click here to view code.
summary_mean_of_means <- summary_vowels_all %>%
group_by(Speaker) %>%
dplyr::summarise(mean_of_means_F1 = mean(mean_F1),
mean_of_means_F2 = mean(mean_F2),
sd_of_means_F1 = sd(mean_F1),
sd_of_means_F2 = sd(mean_F2)
)- Combine these values with the full sequences raw dataset , then use these values to normalise the data with both the Lobanov and the Lobanov 2.0 method
Click here to view code.
pruned = alllong
sequencesall <- pruned %>%
#add in the data
left_join(., summary_mean_of_means, by="Speaker") %>%
#normalise with Lobanov 2.0
mutate(F1_lobanov_2.0 = (f1 - mean_of_means_F1)/sd_of_means_F1,
F2_lobanov_2.0 = (f2 - mean_of_means_F2)/sd_of_means_F2) %>%
#remove the variables that are not required
dplyr::select(-(mean_of_means_F1:sd_of_means_F2))- Normalize the monophthongs
Click here to view code.
monophthongs$f1 = monophthongs$F1_50
monophthongs$f2 = monophthongs$F2_50
monophthongsall <- monophthongs %>%
#add in the data
left_join(., summary_mean_of_means, by="Speaker") %>%
left_join(., summary_vowels_all[, c("Speaker", "Target.teAkaSegment", "token_count_vowel")]) %>%
left_join(., summary_vowels_all_lobanov) %>%
#normalise the raw F1 and F2 values with Lobanov
mutate(F1_lobanov = (f1 - mean_F1_lobanov)/sd_F1_lobanov,
F2_lobanov = (f2 - mean_F2_lobanov)/sd_F2_lobanov,
#normalise with Lobanov 2.0
F1_lobanov_2.0 = (f1 - mean_of_means_F1)/sd_of_means_F1,
F2_lobanov_2.0 = (f2 - mean_of_means_F2)/sd_of_means_F2) %>%
#remove the variables that are not required
dplyr::select(-(mean_of_means_F1:sd_of_means_F2), -(mean_F1_lobanov:sd_F2_lobanov))- Save the normalised sequences and monophthongs
Click here to view code.
write.csv(sequencesall, here("public", "Data", "openingsequences_normalised_nofilter.csv"))
write.csv(monophthongsall, here("public", "Data", "monophthongsfinal.csv"))4.1.4 Formant trajectory filtering
This section provides the code to filter the formant trajectories, as described in the §3.3.1 of the manuscript.
- Read in normalized sequences data if need be
Click here to view code.
sequences = read.csv(here("public", "Data", "openingsequences_normalised_nofilter.csv"))- Some data prep
Click here to view code.
sequences$participant_gender = as.factor(sequences$participant_gender)
sequences$category = as.factor(sequences$category)
sequences$sequence = as.factor(sequences$Target.vowelCluster)
sequences$stress = as.factor(sequences$stress)
sequences$category_gender = interaction(sequences$participant_gender, sequences$category)
sequences <- sequences %>%
mutate(unique_id = paste(MatchId, time)) %>%
filter(!duplicated(unique_id))- Pivot the data frame
Click here to view code.
vowels <- sequences
vowels <- vowels %>%
pivot_longer(
cols = F1_lobanov_2.0:F2_lobanov_2.0, # Select the columns to turn into rows.
names_to = "Formant", # Name the column to indicate if data is F1 or F2,
values_to = "Frequency"
)
vowels %>%
head(100) %>%
kable() %>%
kable_styling(font_size = 11) %>%
scroll_box(width = "100%")- Some more data prep
Click here to view code.
vowels$Vowel = vowels$sequence
vowels$word = vowels$Target.word
vowels <- vowels %>%
mutate(preceding = str_match(word, "(.*)[eiou]a")[,2] %>%
str_extract("(wh|ng|[^:]{0,1}:*)$") %>%
str_remove_all(":") %>%
factor(),
following = str_match(word, "[eiou]a(.*)")[,2] %>%
str_extract("^[-:]*(wh|ng|[^:]{0,1}:*)") %>%
str_remove_all("[-:]") %>%
ifelse(.=="",
After.Match %>%
str_to_lower() %>%
str_extract("^([<>~?:\"' ]|-)*(wh|ng|.{0,1})") %>%
str_remove("[<>~?:\"' -]+") %>%
paste0("$", .),
.) %>%
factor(),
time_left = exp(-(time-1)/1.5),
time_right = exp(-(9-time)/1.5),
duration = Target.vowelCluster.end - Target.vowelCluster.start,
preceding_category_gender = paste(preceding, category_gender) %>% factor(),
following_category_gender = paste(following, category_gender) %>% factor(),
Speaker_f = factor(Speaker)
) %>%
group_by(MatchId) %>%
mutate(traj_start=time==min(time)) %>%
ungroup()- Filtering functions
Click here to view code.
# 1) trajectories that are too far away from everyone else
calculate_overall_deviation <- function (id, time, frequency) {
#traj_ids <- unique(dat$MatchId)
comp <- tibble(id, time, frequency) %>%
pivot_wider(id_cols=id,
names_from=time,
values_from=frequency) %>%
select(-id)
means <- summarise(comp, across(everything(), ~ median(.x, na.rm=T))) %>%
unlist() %>%
tibble(time=as.numeric(names(.)),
overall_mean=.) %>%
arrange(time)
#print(means)
tibble(id, time, frequency) %>%
left_join(means, by="time") %>%
group_by(id) %>%
mutate(dev = abs(mean(frequency - overall_mean))) %>%
ungroup() %>%
pull(dev) %>%
return()
}
# 2) individual data points that represent too much of a jump
calculate_jumpiness <- function (id, time, frequency) {
# fit qgam smooth to entire subset
m <- qgam(frequency ~ s(time, k=9), tibble(time, frequency), qu=0.5)
# extract smoothing parameter
smo_pe <- m$sp
# fit smooth to each traj with sp
tibble(id, frequency, time) %>%
group_by(id) %>%
mutate(jumpiness =
abs(
frequency - predict(
gam(frequency ~ s(time,k=length(time),sp=smo_pe))
)
)
) %>%
ungroup() %>%
pull(jumpiness) %>%
return()
}- Filter all the categories / vowels / formants and make some plots of the filtered data
Click here to view code.
generate_preds <- function (dat, newdat, pred_type) {
#cat(dat$Formant[1], dat$category[1], dat$participant_gender[1], "\n")
if (pred_type == "gam") {
predict(
bam(Frequency ~ s(time, k=9),
data=dat),
newdata=newdat
)
} else {
predict(
qgam(Frequency ~ s(time, k=9),
data=dat, qu=0.5),
newdata=newdat
)
}
}
# we iterate through the vowels
for (v in unique(vowels$Vowel)) {
# unfiltered data
vdat <- filter(vowels, Vowel==v) %>%
mutate(data_type="unfiltered")
vdat_filtered <- vdat %>%
# we filter separately within formant / category_gender
group_by(Formant, category, participant_gender) %>%
mutate(jump=calculate_jumpiness(MatchId, time, Frequency)) %>%
#### PAR 1 here:
# jump criterion = 1, which is in Lobanov space
filter(jump < 1) %>%
ungroup() %>%
# we remove trajectories with 3 or fewer data points
group_by(MatchId) %>%
filter(n() > 3) %>%
ungroup() %>%
# we remove trajectories that are too far away from their
# vowel / formant / category_gender group
group_by(Formant, category, participant_gender) %>%
mutate(dev=calculate_overall_deviation(MatchId, time, Frequency)) %>%
#### PAR 2 here:
# deviation criterion = 1.5, which is in Lobanov space
filter(dev < 1.5) %>%
ungroup() %>%
mutate(data_type="filtered")
vdat_all <- bind_rows(vdat, vdat_filtered)
# generate gam / qgam models for filtered / unfiltered data
vdat_all_gam <- vdat_all %>%
group_by(data_type, Formant, category, participant_gender) %>%
nest() %>%
mutate(pred=
map(
data,
~ tibble(time=1:9) %>%
mutate(Frequency =
generate_preds(
.x,
.,
pred_type="gam"
)
)
)
)
vdat_all_qgam <- vdat_all %>%
group_by(data_type, Formant, category, participant_gender) %>%
nest() %>%
mutate(pred=
map(
data,
~ tibble(time=1:9) %>%
mutate(Frequency =
generate_preds(
.x,
.,
pred_type="qgam"
)
)
)
)
v_gam_preds <- bind_rows(
vdat_all_gam %>%
select(-data) %>%
unnest() %>%
mutate(pred_type="gam"),
vdat_all_qgam %>%
select(-data) %>%
unnest() %>%
mutate(pred_type="qgam"),
)
pdf(here::here("Figures", "FilteredData", "Formants", paste0(v, ".pdf")), onefile = TRUE)
for (f in unique(vdat_all$Formant)) {
for (g in unique(vdat_all$participant_gender)) {
gp <- ggplot(filter(vdat_all, Formant==f, participant_gender==g),
aes(x=time, y=Frequency)) +
facet_grid(category ~ data_type) +
geom_line(aes(group=MatchId), col="black", lwd=0.1, alpha=0.2) +
geom_line(data=filter(v_gam_preds, Formant==f, participant_gender==g),
aes(col=pred_type), lwd=1) +
scale_colour_manual(values=c("blue","red")) +
ggtitle(paste(f, g)) +
theme(legend.position = "none")
print(gp)
}
}
#write csv of filtered data
for (f in unique(vdat_filtered$Formant)) {
file_name <- here("Filtered", "Formants", paste0(f, ".csv"))
write.csv(vdat_filtered, file = file_name, row.names = FALSE)
}
dev.off()
}- Combine filtered formants data
Click here to view code.
formants_filtered_ea <- read.csv(here("public", "Data", "Filtered", "Formants", "ea.csv"))
formants_filtered_ia <- read.csv(here("public", "Data", "Filtered", "Formants", "ia.csv"))
formants_filtered_oa <- read.csv(here("public", "Data", "Filtered", "Formants", "oa.csv"))
formants_filtered_ua <- read.csv(here("public", "Data", "Filtered", "Formants", "ua.csv"))
formants_filtered_all <- rbind(formants_filtered_ea, formants_filtered_ia, formants_filtered_oa, formants_filtered_ua)
write.csv(formants_filtered_all, here("public", "Data", "formants_filtered_all.csv"))4.2 Pitch and Intensity (Manuscript §3.3.2)
The following code extracts praat measurements for pitch and intensity. As for the formant measurements, it requires a LaBB-CAT account. Chunks are set not to evaluate, measurements can be read in from provided csvs below.
4.2.1 Measurements
- Define URL + intervals, separate data by sequence
Click here to view code.
url <- "https://labbcat.canterbury.ac.nz/maonze/"
intervals <- c(.2,.3,.4, .5, .6, .7, .8)
ia = data_filtered %>% filter(Target.vowelCluster == "ia")
ua = data_filtered %>% filter(Target.vowelCluster == "ua")
oa = data_filtered %>% filter(Target.vowelCluster == "oa")
ea = data_filtered %>% filter(Target.vowelCluster == "ea") - /ia/ pitch and intensity measurements
Click here to view code.
iapitch <- ia %>%
mutate(nzilbb.labbcat::processWithPraat(
url,
MatchId,
Target.vowelCluster.start,
Target.vowelCluster.end,
window.offset=0.025,
paste(
praatScriptPitch(gender.attribute = "participant_gender",
value.for.male = "M",
pitch.floor.male = 30,
sample.points = intervals,
get.mean=TRUE),
praatScriptIntensity(sample.points = intervals)))) %>%
rename()
write.csv(iapitch, here("public", "Data", "iaPitchIntRaw.csv"))- /ea/ pitch and intensity measurements
Click here to view code.
eapitch <-
ea %>%
mutate(nzilbb.labbcat::processWithPraat(
url,
MatchId,
Target.vowelCluster.start,
Target.vowelCluster.end,
window.offset=0.025,
paste(
praatScriptPitch(gender.attribute = "participant_gender",
value.for.male = "M",
pitch.floor.male = 30,
sample.points = intervals,
get.mean=TRUE,),
praatScriptIntensity(sample.points = intervals
)))) %>%
rename()
write.csv(eapitch, here("public", "Data", "eaPitchIntRaw.csv"))- /oa/ pitch and intensity measurements
Click here to view code.
oapitch <-oa %>%
mutate(nzilbb.labbcat::processWithPraat(
url,
MatchId,
Target.vowelCluster.start,
Target.vowelCluster.end,
window.offset=0.025,
paste(
praatScriptPitch(gender.attribute = "participant_gender",
value.for.male = "M",
pitch.floor.male = 30,
sample.points = intervals,
get.mean=TRUE),
praatScriptIntensity(sample.points = intervals )))) %>%
rename()
write.csv(oapitch, here("public", "Data", "oaPitchIntRaw.csv")) - /ua/ pitch and intensity measurements
Click here to view code.
uapitch <- ua %>%
mutate(nzilbb.labbcat::processWithPraat(
url,
MatchId,
Target.vowelCluster.start,
Target.vowelCluster.end,
window.offset=0.025,
paste(
praatScriptPitch(gender.attribute = "participant_gender",
value.for.male = "M",
pitch.floor.male = 30,
sample.points = intervals,
get.mean=TRUE),
praatScriptIntensity(sample.points = intervals )))) %>%
rename()
write.csv(uapitch, here("public", "Data", "uaPitchIntRaw.csv")) - Read in data if need be
Click here to view code.
iapitch <- read.csv(here("public", "Data", "iaPitchIntRaw.csv"))
eapitch <- read.csv(here("public", "Data", "eaPitchIntRaw.csv"))
oapitch <- read.csv(here("public", "Data","oaPitchIntRaw.csv"))
uapitch <- read.csv(here("public", "Data","uaPitchIntRaw.csv"))- Create combined data frame
Click here to view code.
allpitch = rbind(iapitch,eapitch,oapitch,uapitch)- Make separate data frames for pitch and intensity, pivot longer
Click here to view code.
allpitch = allpitch %>% mutate_at(c("intensity_time_0_2","intensity_time_0_3","intensity_time_0_4","intensity_time_0_5","intensity_time_0_6","intensity_time_0_7","intensity_time_0_8","pitch_time_0_2","pitch_time_0_3","pitch_time_0_4","pitch_time_0_5","pitch_time_0_6","pitch_time_0_7","pitch_time_0_8"), as.numeric)
allintenselong = allpitch %>% pivot_longer(c(intensity_time_0_2,intensity_time_0_3,intensity_time_0_4,intensity_time_0_5,intensity_time_0_6,intensity_time_0_7,intensity_time_0_8), names_to = "intensitytime", values_to = "intensity")
allpitchlong = allpitch %>% pivot_longer(c(pitch_time_0_2,pitch_time_0_3, pitch_time_0_4,pitch_time_0_5,pitch_time_0_6,pitch_time_0_7,pitch_time_0_8),
names_to = "pitchtime",
values_to = "pitch")
pitchintenselong = allpitchlong[,c("MatchId", "sequence", "Speaker", "participant_gender", "category", "pitchtime", "pitch", "complex")]
pitchintenselong$temptime = pitchintenselong$pitchtime
pitchintenselong$time = as.numeric(substr( pitchintenselong$temptime, 14,14))
pitchintenselong$pitch = allpitchlong$pitch
pitchintenselong$intensity = allintenselong$intensity- Remove NAs
Click here to view code.
pitchintenselong <- pitchintenselong %>%
drop_na(pitch)
pitchintenselong <- pitchintenselong %>%
drop_na(intensity)- Write csv for long, uncentered data (not strictly necessary, but good to have)
Click here to view code.
write.csv(pitchintenselong, here("public", "Data", "pitchlongall_uncentered.csv"))- Split up pitch and intensity
Click here to view code.
int <- pitchintenselong %>%
select(-pitch)
pitch <- pitchintenselong %>%
select(-intensity)- Centre data within speaker, save .csvs
Click here to view code.
pitch <- pitch %>% group_by(Speaker) %>%
mutate(c_pitch = scale(pitch, center=TRUE, scale=FALSE))
int <- int %>% group_by(Speaker) %>%
mutate(c_intensity = scale(intensity, center=TRUE, scale=FALSE))
write.csv(pitch, here("public", "Data", "pitch_centered_per_speaker_nofilter.csv"))
write.csv(int, here("public", "Data", "intcentered_per_speaker.csv"))4.3 Pitch and Intensity filtering
This section provides the code to filter the pitch and intensity trajectories, as described in §3.3.2 of the manuscript.
- Read in data
Click here to view code.
pitch <- read.csv(here("public", "Data","pitch_centered_per_speaker_nofilter.csv"))
int <- read.csv(here("public", "Data","intcentered_per_speaker.csv"))
sequences <- read.csv(here("public", "Data", "opening_seqs_selected_data.csv"))- Some data prep
Click here to view code.
sequences$category_gender = interaction(sequences$participant_gender, sequences$category)
sequences_info <- sequences %>%
select(MatchId, Speaker, Target.word, After.Match, category, participant_gender, category_gender, Target.vowelCluster.end, Target.vowelCluster.start) %>%
unique()- Manually filter out pitch measurement errors
Click here to view code.
pitch <- pitch %>%
rename(raw_pitch = pitch)
filtered_women <- pitch %>%
filter(participant_gender == "F") %>%
filter(raw_pitch >= 70 & raw_pitch <= 460)
filtered_men <- pitch %>%
filter(participant_gender == "M") %>%
filter(raw_pitch >= 60 & raw_pitch <= 230)
pitch_filtered <- rbind(filtered_women, filtered_men) - Some more data prep
Click here to view code.
pitch = pitch_filtered %>%
dplyr::select(sequence,MatchId,
time,
pitch=c_pitch)
int = int %>%
dplyr::select(sequence,MatchId,
time,
intensity=c_intensity)
pitch <- left_join(pitch, sequences_info)
int <- left_join(int, sequences_info)
pitch <- pitch %>%
mutate(unique_id = paste(MatchId, time)) %>%
filter(!duplicated(unique_id)) %>%
drop_na()
int <- int %>%
mutate(unique_id = paste(MatchId, time)) %>%
filter(!duplicated(unique_id)) %>%
drop_na()
pitch$participant_gender = as.factor(pitch$participant_gender)
pitch$category = as.factor(pitch$category)
pitch$sequence = as.factor(pitch$sequence)
pitch$MatchId = as.factor(pitch$MatchId)
int$participant_gender = as.factor(int$participant_gender)
int$category = as.factor(int$category)
int$sequence = as.factor(int$sequence)
int$MatchId = as.factor(int$MatchId)4.3.1 Pitch trajectory filtering
- Pivot the data frame
Click here to view code.
vowels <- pitch %>%
pivot_longer(
cols = pitch, # Select the columns to turn into rows.
names_to = "MeasureType", # Name the column to indicate if data is pitch or intensity
values_to = "Measure"
)
is.numeric(vowels$Measure)
vowels %>%
head(100) %>%
kable() %>%
kable_styling(font_size = 11) %>%
scroll_box(width = "100%")- Some more data prep
Click here to view code.
vowels$Vowel = vowels$sequence
vowels$word = vowels$Target.word
vowels <- vowels %>%
mutate(preceding = str_match(word, "(.*)[eiou]a")[,2] %>%
str_extract("(wh|ng|[^:]{0,1}:*)$") %>%
str_remove_all(":") %>%
factor(),
following = str_match(word, "[eiou]a(.*)")[,2] %>%
str_extract("^[-:]*(wh|ng|[^:]{0,1}:*)") %>%
str_remove_all("[-:]") %>%
ifelse(.=="",
After.Match %>%
str_to_lower() %>%
str_extract("^([<>~?:\"' ]|-)*(wh|ng|.{0,1})") %>%
str_remove("[<>~?:\"' -]+") %>%
paste0("$", .),
.) %>%
factor(),
time_left = exp(-(time-1)/1.5),
time_right = exp(-(9-time)/1.5),
duration = Target.vowelCluster.end - Target.vowelCluster.start,
preceding_category_gender = paste(preceding, category_gender) %>% factor(),
following_category_gender = paste(following, category_gender) %>% factor(),
Speaker_f = factor(Speaker)
) %>%
group_by(MatchId) %>%
mutate(traj_start=time==min(time)) %>%
ungroup()
vowels <- vowels %>%
drop_na()- Filtering functions
Click here to view code.
# 1) trajectories that are too far away from everyone else
calculate_overall_deviation <- function (id, time, Measure) {
#traj_ids <- unique(dat$MatchId)
comp <- tibble(id, time, Measure) %>%
pivot_wider(id_cols=id,
names_from=time,
values_from=Measure) %>%
select(-id)
means <- summarise(comp, across(everything(), ~ median(.x, na.rm=T))) %>%
unlist()
tibble(id, time, Measure) %>%
group_by(id) %>%
mutate(dev = abs(mean(Measure - means[time]))) %>%
ungroup() %>%
pull(dev) %>%
return()
}
# 2) individual data points that represent too much of a jump
calculate_jumpiness <- function (id, time, Measure) {
# fit qgam smooth to entire subset
m <- qgam(Measure ~ s(time, k=4), tibble(time, Measure), qu=0.5)
# extract smoothing parameter
smo_pe <- m$sp
# fit smooth to each traj with sp
tibble(id, Measure, time) %>%
group_by(id) %>%
mutate(jumpiness =
abs(
Measure - predict(
gam(Measure ~ s(time,k=length(time),sp=smo_pe))
)
)
) %>%
ungroup() %>%
pull(jumpiness) %>%
return()
}- Filter pitch trajectories for all the categories and vowels, and make some plots of the filtered data
Click here to view code.
generate_preds <- function (dat, newdat, pred_type) {
#cat(dat$Formant[1], dat$category[1], dat$participant_gender[1], "\n")
if (pred_type == "gam") {
predict(
bam(Measure ~ s(time, k=5),
data=dat),
newdata=newdat
)
} else {
predict(
qgam(Measure ~ s(time, k=5),
data=dat, qu=0.5),
newdata=newdat
)
}
}
# we iterate through the vowels
for (v in unique(vowels$Vowel)) {
# unfiltered data
vdat <- filter(vowels, Vowel==v) %>%
mutate(data_type="unfiltered")
vdat_filtered <- vdat %>%
# we remove trajectories with 3 or fewer data points
group_by(MatchId) %>%
filter(n() > 3) %>%
ungroup() %>%
# we filter separately within formant / category_gender
group_by(MeasureType, category, participant_gender) %>%
mutate(jump=calculate_jumpiness(MatchId, time, Measure)) %>%
#### PAR 1 here:
# jump criterion
filter(jump < 100) %>%
ungroup() %>%
mutate(data_type="filtered")
vdat_all <- bind_rows(vdat, vdat_filtered)
# generate gam / qgam models for filtered / unfiltered data
vdat_all_gam <- vdat_all %>%
group_by(data_type, MeasureType, category, participant_gender) %>%
nest() %>%
mutate(pred=
map(
data,
~ tibble(time=2:8) %>%
mutate(Measure =
generate_preds(
.x,
.,
pred_type="gam"
)
)
)
)
vdat_all_qgam <- vdat_all %>%
group_by(data_type, MeasureType, category, participant_gender) %>%
nest() %>%
mutate(pred=
map(
data,
~ tibble(time=2:8) %>%
mutate(Measure =
generate_preds(
.x,
.,
pred_type="qgam"
)
)
)
)
v_gam_preds <- bind_rows(
vdat_all_gam %>%
select(-data) %>%
unnest() %>%
mutate(pred_type="gam"),
vdat_all_qgam %>%
select(-data) %>%
unnest() %>%
mutate(pred_type="qgam"),
)
pdf(here::here("Figures", "FilteredData", "Pitch", paste0(v, ".pdf")), onefile = TRUE)
for (f in unique(vdat_all$MeasureType)) {
for (g in unique(vdat_all$participant_gender)) {
gp <- ggplot(filter(vdat_all, MeasureType==f, participant_gender==g),
aes(x=time, y=Measure)) +
facet_grid(category ~ data_type) +
geom_line(aes(group=MatchId), col="black", lwd=0.1, alpha=0.2) +
geom_line(data=filter(v_gam_preds, MeasureType==f, participant_gender==g),
aes(col=pred_type), lwd=1) +
scale_colour_manual(values=c("blue","red")) +
ggtitle(paste(f, g))
print(gp)
}
}
#write csv of filtered data
for (f in unique(vdat_filtered$Measure)) {
file_name <- here("Filtered", "Pitch", paste0(v, ".csv"))
write.csv(vdat_filtered, file = file_name, row.names = FALSE)
}
dev.off()
}4.3.2 Intensity trajectory filtering
- Pivot the data
Click here to view code.
vowels <- int %>%
pivot_longer(
cols = intensity, # Select the columns to turn into rows.
names_to = "MeasureType", # Name the column to indicate if data is pitch or intensity
values_to = "Measure"
)
is.numeric(vowels$Measure)
vowels %>%
head(100) %>%
kable() %>%
kable_styling(font_size = 11) %>%
scroll_box(width = "100%")- Some more data prep
Click here to view code.
vowels$Vowel = vowels$sequence
vowels$word = vowels$Target.word
vowels <- vowels %>%
mutate(preceding = str_match(word, "(.*)[eiou]a")[,2] %>%
str_extract("(wh|ng|[^:]{0,1}:*)$") %>%
str_remove_all(":") %>%
factor(),
following = str_match(word, "[eiou]a(.*)")[,2] %>%
str_extract("^[-:]*(wh|ng|[^:]{0,1}:*)") %>%
str_remove_all("[-:]") %>%
ifelse(.=="",
After.Match %>%
str_to_lower() %>%
str_extract("^([<>~?:\"' ]|-)*(wh|ng|.{0,1})") %>%
str_remove("[<>~?:\"' -]+") %>%
paste0("$", .),
.) %>%
factor(),
time_left = exp(-(time-1)/1.5),
time_right = exp(-(9-time)/1.5),
duration = Target.vowelCluster.end - Target.vowelCluster.start,
preceding_category_gender = paste(preceding, category_gender) %>% factor(),
following_category_gender = paste(following, category_gender) %>% factor(),
Speaker_f = factor(Speaker)
) %>%
group_by(MatchId) %>%
mutate(traj_start=time==min(time)) %>%
ungroup()
vowels <- vowels %>%
drop_na()- Filtering functions
Click here to view code.
# 1) trajectories that are too far away from everyone else
calculate_overall_deviation <- function (id, time, Measure) {
#traj_ids <- unique(dat$MatchId)
comp <- tibble(id, time, Measure) %>%
pivot_wider(id_cols=id,
names_from=time,
values_from=Measure) %>%
select(-id)
means <- summarise(comp, across(everything(), ~ median(.x, na.rm=T))) %>%
unlist() %>%
tibble(time=as.numeric(names(.)),
overall_mean=.) %>%
arrange(time)
#print(means)
tibble(id, time, Measure) %>%
left_join(means, by="time") %>%
group_by(id) %>%
mutate(dev = abs(mean(Measure - overall_mean))) %>%
ungroup() %>%
pull(dev) %>%
return()
}
# 2) individual data points that represent too much of a jump
calculate_jumpiness <- function (id, time, Measure) {
# fit qgam smooth to entire subset
m <- qgam(Measure ~ s(time, k=4), tibble(time, Measure), qu=0.5)
# extract smoothing parameter
smo_pe <- m$sp
# fit smooth to each traj with sp
tibble(id, Measure, time) %>%
group_by(id) %>%
mutate(jumpiness =
abs(
Measure - predict(
gam(Measure ~ s(time,k=length(time),sp=smo_pe))
)
)
) %>%
ungroup() %>%
pull(jumpiness) %>%
return()
}- Filter intensity trajectories for all the categories and vowels, and make some plots of the filtered data
Click here to view code.
generate_preds <- function (dat, newdat, pred_type) {
#cat(dat$Formant[1], dat$category[1], dat$participant_gender[1], "\n")
if (pred_type == "gam") {
predict(
bam(Measure ~ s(time, k=6),
data=dat),
newdata=newdat
)
} else {
predict(
qgam(Measure ~ s(time, k=6),
data=dat, qu=0.5),
newdata=newdat
)
}
}
# we iterate through the vowels
for (v in unique(vowels$Vowel)) {
# unfiltered data
vdat <- filter(vowels, Vowel==v) %>%
mutate(data_type="unfiltered")
vdat_filtered <- vdat %>%
# we remove trajectories with 3 or fewer data points
group_by(MatchId) %>%
filter(n() > 3) %>%
ungroup() %>%
# we filter separately within formant / category_gender
group_by(MeasureType, category, participant_gender) %>%
mutate(jump=calculate_jumpiness(MatchId, time, Measure)) %>%
#### PAR 1 here:
# jump criterion =
filter(jump < 15) %>%
ungroup() %>%
# we remove trajectories that are too far away from their
# vowel / formant / category_gender group
group_by(MeasureType, category, participant_gender) %>%
mutate(dev=calculate_overall_deviation(MatchId, time, Measure)) %>%
#### PAR 2 here:
# deviation criterion =
filter(dev < 15) %>%
ungroup() %>%
mutate(data_type="filtered")
vdat_all <- bind_rows(vdat, vdat_filtered)
# generate gam / qgam models for filtered / unfiltered data
vdat_all_gam <- vdat_all %>%
group_by(data_type, MeasureType, category, participant_gender) %>%
nest() %>%
mutate(pred=
map(
data,
~ tibble(time=2:8) %>%
mutate(Measure =
generate_preds(
.x,
.,
pred_type="gam"
)
)
)
)
vdat_all_qgam <- vdat_all %>%
group_by(data_type, MeasureType, category, participant_gender) %>%
nest() %>%
mutate(pred=
map(
data,
~ tibble(time=2:8) %>%
mutate(Measure =
generate_preds(
.x,
.,
pred_type="qgam"
)
)
)
)
v_gam_preds <- bind_rows(
vdat_all_gam %>%
select(-data) %>%
unnest() %>%
mutate(pred_type="gam"),
vdat_all_qgam %>%
select(-data) %>%
unnest() %>%
mutate(pred_type="qgam"),
)
pdf(here::here("Figures", "FilteredData", "Int", paste0(v, ".pdf")), onefile = TRUE)
for (f in unique(vdat_all$MeasureType)) {
for (g in unique(vdat_all$participant_gender)) {
gp <- ggplot(filter(vdat_all, MeasureType==f, participant_gender==g),
aes(x=time, y=Measure)) +
facet_grid(category ~ data_type) +
geom_line(aes(group=MatchId), col="black", lwd=0.1, alpha=0.2) +
geom_line(data=filter(v_gam_preds, MeasureType==f, participant_gender==g),
aes(col=pred_type), lwd=1) +
scale_colour_manual(values=c("blue","red")) +
ggtitle(paste(f, g))
print(gp)
}
}
#write csv of filtered data
for (f in unique(vdat_filtered$Measure)) {
file_name <- here("Filtered", "Int", paste0(v, ".csv"))
write.csv(vdat_filtered, file = file_name, row.names = FALSE)
}
dev.off()
}4.3.3 Combine filtered data
- Read data in if need be
Click here to view code.
pitch_filtered_ea <- read.csv(here("public", "Data", "Filtered", "Pitch", "ea.csv"))
pitch_filtered_ia <- read.csv(here("public", "Data", "Filtered", "Pitch", "ia.csv"))
pitch_filtered_oa <- read.csv(here("public", "Data", "Filtered", "Pitch", "oa.csv"))
pitch_filtered_ua <- read.csv(here("public", "Data", "Filtered", "Pitch", "ua.csv"))
int_filtered_ea <- read.csv(here("public", "Data", "Filtered", "Int", "ea.csv"))
int_filtered_ia <- read.csv(here("public", "Data", "Filtered", "Int", "ia.csv"))
int_filtered_oa <- read.csv(here("public", "Data", "Filtered", "Int", "oa.csv"))
int_filtered_ua <- read.csv(here("public", "Data", "Filtered", "Int", "ua.csv"))- Create combined data frames
Click here to view code.
pitch_filtered_all <- rbind(pitch_filtered_ea, pitch_filtered_ia, pitch_filtered_oa, pitch_filtered_ua)
int_filtered_all <- rbind(int_filtered_ea, int_filtered_ia, int_filtered_oa, int_filtered_ua)- Write .csvs of filtered data
Click here to view code.
write.csv(pitch_filtered_all, here("public", "Data", "pitch_filtered.csv"))
write.csv(int_filtered_all, here("public", "Data", "int_filtered.csv"))5 fPCA
- Load data files (if need be), rename various columns
Click here to view code.
formants_filtered <- read_csv(here("public", "Data", "formants_filtered_all.csv")) %>%
dplyr::select(Vowel, MatchId, time, Formant, Frequency)
formants_wide <- formants_filtered %>%
pivot_wider(
names_from = Formant,
values_from = Frequency
)
formants_wide <- formants_wide %>%
rename(sequence = Vowel,
form_time = time,
f1=F1_lobanov_2.0,f2=F2_lobanov_2.0)
int_filtered <- read.csv(here("public", "Data", "int_filtered.csv")) %>%
dplyr::select(Vowel, MatchId, time, Measure) %>%
rename(intensity = Measure,
sequence = Vowel)
pitch_filtered <- read.csv(here("public", "Data", "pitch_filtered.csv")) %>%
dplyr::select(Vowel, MatchId, time, Measure) %>%
rename(sequence = Vowel,
pitch = Measure)
pitch_intensity_data = left_join(int_filtered, pitch_filtered) %>%
rename(pitch_time = time)- Define function for doing FPCAs for formants. This function performs fPCA for F1 and F2 separately, but does both at the same time for each sequence
Click here to view code.
PerformFPCA_Forms = function(diphthong,data_set){
## Get temporary working data set
data_temp = get(data_set) %>%
dplyr::filter(sequence == diphthong)
## create FPCA inputs for each formant
input_1 = MakeFPCAInputs(IDs=data_temp$MatchId,
tVec=data_temp$form_time,
yVec=data_temp$f1)
input_2 = MakeFPCAInputs(IDs=data_temp$MatchId,
tVec=data_temp$form_time,
yVec=data_temp$f2)
## perform FPCA on inputs
fpca_1 = FPCA(input_1$Ly, input_1$Lt )#optns=list(nRegGrid=9) #this specifies no of time points required
fpca_2 = FPCA(input_2$Ly, input_2$Lt) #optns=list(nRegGrid=9)
## create data frame to return
data_return = data.frame(MatchId = unlist(matrix(input_1$Lid)),
sequence = diphthong,
f1_pc1 = fpca_1$xiEst[,1],
f1_pc2 = fpca_1$xiEst[,2],
f1_pc3 = fpca_1$xiEst[,3],
f2_pc1 = fpca_2$xiEst[,1],
f2_pc2 = fpca_2$xiEst[,2],
f2_pc3 = fpca_2$xiEst[,3])
# create global variables as a list of two FPCA objects
fpca_varname = paste("form_fpca_",diphthong,sep="")
assign(fpca_varname,list(fpca_1,fpca_2),envir=.GlobalEnv)
return(data_return)
}- Run function fPCA for formants, then bind all the frames together
Note: when running, this warning comes up: !– In CheckData(Ly, Lt) : – !– There is a time gap of at least 10% of the observed range across subjects –
Which can be ignored, it just likes more “finely-grained” time series
Click here to view code.
formants_data <- unique(formants_wide) %>%
drop_na()
form_dataname = "formants_data"
data_form_ea = PerformFPCA_Forms("ea",form_dataname)
data_form_ia = PerformFPCA_Forms("ia",form_dataname)
data_form_oa = PerformFPCA_Forms("oa",form_dataname)
data_form_ua = PerformFPCA_Forms("ua",form_dataname)
merged_form = bind_rows(list(data_form_ea,data_form_ia,data_form_oa,data_form_ua))- Function for performing fPCA for pitch and intensity
Click here to view code.
PerformFPCA_Pitch = function(diphthong,data_set){
## get temporary working data set
data_temp = get(data_set) %>%
dplyr::filter(sequence == diphthong)
## create inputs for each formant
input_1 = MakeFPCAInputs(IDs=data_temp$MatchId,
tVec=data_temp$pitch_time,
yVec=data_temp$pitch)
input_2 = MakeFPCAInputs(IDs=data_temp$MatchId,
tVec=data_temp$pitch_time,
yVec=data_temp$intensity)
## perform FPCA on inputs
fpca_1 = FPCA(input_1$Ly, input_1$Lt) #, optns=list(nRegGrid=7)
fpca_2 = FPCA(input_2$Ly, input_2$Lt) #optns=list(nRegGrid=7)
## create data frame to return
data_return = data.frame(MatchId = unlist(matrix(input_1$Lid)),
sequence = diphthong,
pitch_pc1 = fpca_1$xiEst[,1],
pitch_pc2 = fpca_1$xiEst[,2],
pitch_pc3 = fpca_1$xiEst[,3],
intensity_pc1 = fpca_2$xiEst[,1],
intensity_pc2 = fpca_2$xiEst[,2],
intensity_pc3 = fpca_2$xiEst[,3])
## create global variables as a list of two FPCA objects
fpca_varname = paste("pitch_fpca_",diphthong,sep="")
assign(fpca_varname,list(fpca_1,fpca_2),envir=.GlobalEnv)
return(data_return)
}- Run fPCA for pitch and intensity
Click here to view code.
pitch_intensity_data<- unique(pitch_intensity_data) %>%
drop_na()
pint_dataname = "pitch_intensity_data"
data_pitch_ea = PerformFPCA_Pitch("ea",pint_dataname)
data_pitch_ia = PerformFPCA_Pitch("ia",pint_dataname)
data_pitch_oa = PerformFPCA_Pitch("oa",pint_dataname)
data_pitch_ua = PerformFPCA_Pitch("ua",pint_dataname)
merged_pitch = bind_rows(list(data_pitch_ea,data_pitch_ia,data_pitch_oa,data_pitch_ua))- combine fPCA results into a single data frame and save
Click here to view code.
merged_big = merge(merged_form,merged_pitch,by=c("sequence","MatchId"))
write.csv(merged_big, here("public", "Data", "fpca_merged.csv"), row.names = FALSE)5.1 Plot fPCAs
The following plots show the effect of a given fPC curve when added or subtracted from the mean curve. These curves are weighted by the standard deviation of the scores for said fPC, the same method implemented in (Gubian, Torreira, and Boves 2015) and (Gubian et al. 2019). These plots allow us to see what high and low fPC scores correspond to in terms of the shape of the curve. The mean curve is shown as a thick black line, high fPC scores are indicated with a plus <+> and low fPC scores are indicated with a minus <->.
- Define function for plotting fPCAs
Click here to view code.
## MAIN FUNCTION: Generate a plot given a PC and formant (as integer ID)
PlotPCs = function(PC,fpca_type,sequence,fpca_name,flip_symbols=0){
## Create a working dataset
working_fpca = get(paste(fpca_name,"_fpca_",sequence,sep=""))[[fpca_type]]
## get variables from FPCA output
mean_curve = working_fpca$mu
PC_curve = working_fpca$phi[,PC]
PC_mod = PC_curve * sd(working_fpca$xiEst[,PC])
cum_var = working_fpca$cumFVE
if (fpca_name == "form"){
time_start = 1
time_end = 9
} else {
time_start = 2
time_end = 8
}
## send to "MorePoints" function, get finer detail curves
mean_curve = MorePoints(mean_curve,time_start,time_end)
PC_curve = MorePoints(PC_curve,time_start,time_end)
PC_mod = MorePoints(PC_mod,time_start,time_end)
FPCA_extract = data.frame(mean_curve,PC_curve,PC_mod)
# get values for plot title and generate titles
plot_cum_var = cum_var[PC]*100
plot_PC_var = UnTotal(cum_var,PC)*100
if (fpca_name == "form"){
if (fpca_type == 1){
plot_effect = "F1"
} else {
plot_effect = "F2"
}
} else {
if (fpca_type == 1){
plot_effect = "pitch"
} else {
plot_effect = "intensity"
}
}
plot_title = sprintf("Effect of fPC%s on %s \n(Var: %.1f%% VarTotal: %.1f%%)",PC,plot_effect, plot_PC_var,plot_cum_var)
if (fpca_name == "form"){
# if formant, check which formant and adjust limits accordingly
if (fpca_type == 1){
y_min = -1.5
y_max = 3.5
} else {
y_min = -2.5
y_max = 2.5
}
} else {
# alternatively, if pitch/intensity...
if (fpca_type == 1){
y_min = -50
y_max = 50
} else {
y_min = -12
y_max = 7
}
}
## change y label to intensity if intensity is being examined
if (fpca_name == "pitch" & fpca_type == 2){
ylabel = "Normalised Intensity"
} else {
ylabel = "Normalised Frequency"
}
## If "flip_symbols" parameter argument isn't false, flip plus and minus symbols
if (flip_symbols == 0){
add_symbol = "+"
sub_symbol = "-"
} else {
add_symbol = "-"
sub_symbol = "+"
}
PC_plot = ggplot(FPCA_extract, aes(x = seq(time_start,time_end,by=0.5))) +
# plot curves
geom_smooth(aes(y=mean_curve),se=FALSE,color="black") +
geom_point(aes(y=mean_curve + PC_mod),
shape=add_symbol,size=5) +
geom_point(aes(y=mean_curve - PC_mod),
shape=sub_symbol,size=5) +
# format plot
labs(x="Timepoint",y=ylabel,
title=plot_title) +
scale_x_continuous(breaks=seq(time_start,time_end,by=1)) +
theme_bw() + ylim(y_min,y_max) +
theme(panel.grid = element_blank(),
plot.title = element_text(hjust=0.5,size=12))
return(PC_plot)
}
## SUPPORT FUNCTION: Given a specific curve, predict a finer-detail curve
MorePoints = function(curve,time_start,time_end){
times=time_start:time_end
temp_smooth = loess(curve~times)
temp_smoother = predict(temp_smooth,seq(time_start,time_end,by=0.5))
return(temp_smoother)
}
## SUPPORT FUNCTION: Return non-cumulative variance contribution
# ('fdapace.FPCA()' objects contain cumulative variances, not individual PC variance)
UnTotal = function(vec,index){
if (index == 1){
return(vec[index])
} else {
new_vec = vec[index] - vec[index - 1]
return(new_vec)
}
}- Create fPCA plots for formants, prints in a 3x2 grid.
Click here to view code.
sequences = c("ea","ia","oa","ua")
fpca_type = "form"
for (sequence in sequences){
plot_PC1_f1 = PlotPCs(1,1,sequence,fpca_type)
plot_PC1_f2 = PlotPCs(1,2,sequence,fpca_type)
plot_PC2_f1 = PlotPCs(2,1,sequence,fpca_type)
plot_PC2_f2 = PlotPCs(2,2,sequence,fpca_type)
plot_PC3_f1 = PlotPCs(3,1,sequence,fpca_type)
plot_PC3_f2 = PlotPCs(3,2,sequence,fpca_type)
big_plot_title = sprintf("fPC Effects on F1 & F2 for /%s/ ",sequence)
PC_plot_big = grid.arrange(plot_PC1_f1,plot_PC2_f1,plot_PC3_f1,
plot_PC1_f2,plot_PC2_f2,plot_PC3_f2,
ncol=3,top = textGrob(big_plot_title))
ggsave(here("public", "Figures", "fPCA", paste0("hd_forms_", sequence, ".png")),
PC_plot_big,scale=1,width=3600,height=2700,units="px")
}Click here to view code.
# Clear variables for tidiness
rm(plot_PC1_f1,plot_PC2_f1,plot_PC3_f1,
plot_PC1_f2,plot_PC2_f2,plot_PC3_f2,
big_plot_title,PC_plot_big)For each sequence and formant, more than 90% of variance observed was explained by at least three fPCs. As a result, three fPCs have been selected for F1 and F2.
The modifications to the mean F1 and F2 curves by each fPC are similar for each sequence. For F1 and F2, fPC1 explains the height and general shape of the mean curve. fPC2 reveals different trends for F1 and F2. For F1, fPC2 appears to explain the position of the peak: a high fPC2 score for F1 reflects a F1 peak in the middle of the sequence, while a low fPC2 score reflects a F1 peak later in the sequence. For F2, fPC2 seems to captures how extreme the difference is between the onset and offset of the sequence. Finally, fPC3 for both F1 and F2 concerns the transition part of the sequence, in particular whether this has more of a concave or convex shape. For F1, a high fPC3 score reflects a more convex shape, with a central peak, while a low fPC3 score reflects a subtle concave dip in the middle of the sequence. For F2, high fPC3 scores correspond to a subtle concave dip in the middle of the sequence, while low scores correspond to a subtle peak.
- Create fPCA plots for pitch and intensity
Click here to view code.
sequences = c("ea","ia","oa","ua")
fpca_type = "pitch"
for (sequence in sequences){
plot_PC1_pit = PlotPCs(1,1,sequence,fpca_type)
plot_PC1_int = PlotPCs(1,2,sequence,fpca_type)
plot_PC2_pit = PlotPCs(2,1,sequence,fpca_type)
plot_PC2_int = PlotPCs(2,2,sequence,fpca_type)
plot_PC3_pit = PlotPCs(3,1,sequence,fpca_type)
plot_PC3_int = PlotPCs(3,2,sequence,fpca_type)
big_plot_title = sprintf("fPC Effects on pitch and intensity for /%s/",sequence)
PC_plot_big = grid.arrange(plot_PC1_pit,plot_PC2_pit,plot_PC3_pit,
plot_PC1_int,plot_PC2_int,plot_PC3_int,
ncol=3,top = textGrob(big_plot_title))
ggsave(here("public", "Figures", "fPCA", paste0("hd_pit-int_", sequence, ".png")),
PC_plot_big, scale=1, width=3600, height=2700, units="px")
}Click here to view code.
## Clear variables for tidiness
rm(plot_PC1_pit,plot_PC2_pit,plot_PC3_pit,
plot_PC1_int,plot_PC2_int,plot_PC3_int,
big_plot_title,PC_plot_big)For pitch and intensity at least 90% of the cumulative variance is explained by two fPCs.
However, to align with the number of fPCs selected for F1 and F2, and to ensure the threshold is exceeded in every instance, three fPCs were also chosen for pitch and intensity.
FPC1 captures overall differences absolute in pitch and intensity. For pitch, fPC2 captures the direction of the trajectory. High scores indicate a falling trajectory, while low scores correspond to a rising trajectory. For intensity, fPC2 captures the shape of the trajectory. A high fPC2 score reflects a steep drop, whereas a low fPC1 score indicates a relatively stable intensity across the sequence. For pitch, fPC3 captures the extent to which the central part of the curve is convex or concave, with a high score corresponding to a convex curve, and a low score corresponding to a concave curve. For intensity, fPC3 captures the extent to which there is a pronounced peak. A high fPC3 score indicates a more pronounced peak, while a low score reflects a gradual drop.
6 Duration filtering (Manuscript §3.3.3)
Duration filtering occurs at this stage as we only include duration data for sequences which have been through the other filtering processes, and this affects the centering.
- Read in fPCA data if need be
Click here to view code.
fpcadata = read.csv(here("public", "Data", "fpca_merged.csv"))
duration_data = read.csv(here("public", "Data", "opening_seqs_selected_data.csv")) %>%
unique()- Filter seqs for inclusion in fPCA
Click here to view code.
fpcadata_ids <- fpcadata %>%
select(sequence, MatchId) %>%
unique()
duration_data <- left_join(fpcadata_ids, duration_data) %>%
unique()- Some data prep
Click here to view code.
duration_data <- duration_data %>%
mutate(Speaker = as.factor(Speaker)) %>%
mutate(sequence = as.factor(sequence))- Add duration to data frame, convert to ms
Click here to view code.
duration_data$duration = duration_data$Target.vowelCluster.end - duration_data$Target.vowelCluster.start
duration_data <- duration_data %>%
drop_na(duration) %>%
mutate(duration_ms = duration * 1000) - Filter out sequences with duration > 500 ms
Click here to view code.
duration_data <- duration_data %>%
filter(duration_ms < 500)
duration_data <- duration_data %>%
mutate(s_duration = scale(duration, center=TRUE, scale=TRUE))
duration_data = duration_data %>% ungroup()
duration_data$s_duration = as.numeric(duration_data$s_duration)
duration = unique(duration_data %>% select(MatchId, s_duration))We are now ready to conduct the uPCA!
7 uPCA (Manuscript §4.1 )
- Prepare data. Combine duration data with fPCA data, and filter out any NA values for duration.
Click here to view code.
uPCA_data = left_join(fpcadata, duration, by="MatchId") %>%
filter(! is.na(s_duration)) - Rename columns so that they appear more neatly in the index loadings
Click here to view code.
uPCA_data <- uPCA_data %>%
rename(`Duration: z-scored` = s_duration,
`F1: fPC1` = f1_pc1,
`F1: fPC2` = f1_pc2,
`F1: fPC3` = f1_pc3,
`F2: fPC1` = f2_pc1,
`F2: fPC2` = f2_pc2,
`F2: fPC3` = f2_pc3,
`Pitch: fPC1` = pitch_pc1,
`Pitch: fPC2` = pitch_pc2,
`Pitch: fPC3` = pitch_pc3,
`Intensity: fPC1` = intensity_pc1,
`Intensity: fPC2` = intensity_pc2,
`Intensity: fPC3` = intensity_pc3,
)- Create seperate data frames, one for each sequence
Click here to view code.
ea_data = uPCA_data %>% filter(sequence =="ea")
oa_data = uPCA_data %>% filter(sequence =="oa")
ia_data = uPCA_data %>% filter(sequence =="ia")
ua_data = uPCA_data %>% filter(sequence =="ua") - Run uPCA for each sequence
Click here to view code.
set.seed(1)
oa_test <- pca_test(
oa_data %>% select(-sequence, -MatchId),
n = 500,
variance_confint = 0.95,
loadings_confint = 0.9
)
ia_test <- pca_test(
ia_data %>% select(-sequence, -MatchId),
n = 500,
variance_confint = 0.95,
loadings_confint = 0.9
)
ua_test <- pca_test(
ua_data %>% select(-sequence, -MatchId),
n = 500,
variance_confint = 0.95,
loadings_confint = 0.9
)
ea_test <- pca_test(
ea_data %>% select(-sequence, -MatchId),
n = 500,
variance_confint = 0.95,
loadings_confint = 0.9
)- Plot variance explained for each sequence
/ea/
/ia/
/oa/
/ua/
7.1 Exploring which uPCs to interpret
We plot the index loadings for uPC1-4 for each sequence. The summary is: uPC1 identifies the main variation in our data, no other uPCs have multiple variables sitting above the null distribution, or if they do it is fPC1 for intensity or pitch, which capture overall height differences.
7.1.1 Index loadings for /ea/, uPC1-4
Click here to view code.
eapc1_loadings_plot_uf <- plot_loadings(ea_test, pc_no=1, filter_boots = FALSE) + geom_text(label="ea",aes(2,.9), size = 10, colour="black")
eapc1_loadings_plot_uf Click here to view code.
eapc2_loadings_plot_uf <- plot_loadings(ea_test, pc_no=2, filter_boots = FALSE) + geom_text(label="ea",aes(2,.7), size = 10, colour="black") + theme(legend.position = "none")
eapc2_loadings_plot_ufClick here to view code.
eapc3_loadings_plot_uf <- plot_loadings(ea_test, pc_no=3, filter_boots = FALSE) + geom_text(label="ea",aes(2,.9), size = 10, colour="black")
eapc3_loadings_plot_uf 7.1.2 Index loadings for /ia/, uPC1-4
Click here to view code.
iapc1_loadings_plot_uf <- plot_loadings(ia_test, pc_no=1, filter_boots = FALSE) + geom_text (label="ia",aes(2,.9), size = 10, colour="black")
iapc1_loadings_plot_uf Click here to view code.
iapc2_loadings_plot_uf <- plot_loadings(ia_test, pc_no=2, filter_boots = FALSE) + geom_text(label="ia",aes(2,.75), size = 10, colour="black")
iapc2_loadings_plot_ufClick here to view code.
iapc3_loadings_plot_uf <- plot_loadings(ia_test, pc_no=3, filter_boots = FALSE) + geom_text(label="ia",aes(2,.75), size = 10, colour="black")
iapc3_loadings_plot_uf7.1.3 Index loadings for /oa/, uPC1-4
Click here to view code.
oapc1_loadings_plot_uf <- plot_loadings(oa_test, pc_no=1, filter_boots = FALSE) + geom_text(label="oa",aes(2,.8), size = 10, colour = "black")
oapc1_loadings_plot_uf Click here to view code.
oapc2_loadings_plot_uf <- plot_loadings(oa_test, pc_no=2, filter_boots = TRUE) + geom_text(label="oa",aes(2,.7), size = 10, colour="black")
oapc2_loadings_plot_uf Click here to view code.
oapc3_loadings_plot_uf <- plot_loadings(oa_test, pc_no=3, filter_boots = TRUE) + geom_text(label="oa",aes(2,.8), size = 10, colour = "black")
oapc3_loadings_plot_uf7.1.4 Index loadings for /ua/, uPC1-4
- Flip the loadings to match the others.
Click here to view code.
ua_test$loadings <- ua_test$loadings %>%
mutate(
loading = if_else(PC == "PC1", loading * -1, loading)
) Click here to view code.
uapc1_loadings_plot_uf <- plot_loadings(ua_test, pc_no=1, filter_boots = FALSE)+ geom_text(label="ua",aes(2,.8), size = 10, colour="black")
uapc1_loadings_plot_ufClick here to view code.
uapc2_loadings_plot_uf <- plot_loadings(ua_test, pc_no=2, filter_boots = TRUE) + geom_text(label="ua",aes(2,.75), size = 10, colour="black")
uapc2_loadings_plot_ufClick here to view code.
uapc3_loadings_plot_uf <- plot_loadings(ua_test, pc_no=3, filter_boots = TRUE) + geom_text(label="ua",aes(2,.75), size = 10, colour="black")
uapc3_loadings_plot_uf7.2 Create horizontal index loading plot for uPC1 (Manuscript Figure 2)
- Define custom function for creating horizontal index loading plots. This code is adapted from the plot_loadings() function (used above) in the nzilbb.vowels() package (Wilson Black and Brand 2022)
Click here to view code.
plot_loadings_horizontal <- function(
pca_test, pc_no = 1, violin=FALSE, filter_boots = FALSE,
quantile_threshold = 0.25
) {
stopifnot(
"Data must come from an object of class pca_test_results" =
class(pca_test) == "pca_test_results",
"pc_no must be a number." =
is.numeric(pc_no),
"violin must be either TRUE or FALSE." =
is.logical(violin),
"filter_boots must be either TRUE or FALSE." =
is.logical(filter_boots)
)
if (filter_boots) {
plot_data <- pca_test$raw_data |>
filter(
as.numeric(str_sub(.data$PC, start = 3L)) == pc_no,
source != "original"
) |>
group_by(.data$source, .data$variable) |>
mutate(
median_index = stats::median(.data$index_loading),
quant_threshold = stats::quantile(
.data$index_loading,
quantile_threshold
)
) |>
ungroup() |>
mutate(
largest_loading = .data$median_index == base::max(.data$median_index),
) |>
group_by(.data$source, .data$iteration) |>
filter(
source != "bootstrapped" |
any(
.data$largest_loading & .data$index_loading >= .data$quant_threshold
)
) |>
group_by(.data$source, .data$variable) |>
mutate(
low_limit = stats::quantile(
.data$index_loading,
(1 - pca_test$loadings_confint)/2
),
high_limit = stats::quantile(
.data$index_loading,
1 - (1 - pca_test$loadings_confint)/2
)
) |>
ungroup() |>
mutate(
distribution = if_else(
.data$source == "bootstrapped",
"Sampling",
"Null"
)
) |>
select(-.data$index_loading, -.data$loading) |>
left_join(
pca_test$loadings |> select(
.data$PC,
.data$variable,
.data$index_loading,
.data$loading
),
by = c("PC", "variable")
)
# Calculate count of kept iterations for subtitle
kept_iterations <- plot_data |>
filter(
.data$distribution == "Sampling"
) |>
pull(.data$iteration) |>
base::unique() |>
base::length()
subtitle = glue(
"Filtered Bootstrap Sampling ({kept_iterations} Iterations) ",
"and Permutation-Based Null Distributions"
)
} else {
plot_data <- pca_test$loadings |>
# Filter so we only have data from desired PC.
filter(
as.numeric(str_sub(.data$PC, start = 3L)) == pc_no
) |>
# Reshape so that both permutation and bootstrapped limits are on same
# variables.
pivot_longer(
cols = contains('low'),
names_to = "distribution",
values_to = 'low_limit',
names_pattern = "_(.*)"
) |>
pivot_longer(
cols = contains('high'),
names_to = "distribution_2",
values_to = 'high_limit',
names_pattern = "_(.*)"
) |>
filter(
.data$distribution == .data$distribution_2
) |>
select(-"distribution_2") |>
mutate(
distribution = if_else(
str_detect(.data$distribution, 'null'),
"Null",
"Sampling"
)
)
subtitle = glue(
"Bootstrapped Sampling and Permutation-Based Null Distributions"
)
}
plot_data <- plot_data |>
mutate(
# Reorder 'variable' column so variables plotted in ascending order by
# loading.
variable = fct_reorder(.data$variable, .data$index_loading),
loading_sign = if_else(.data$loading < 0, "-", "+")
)
if (violin) {
violin_data <- pca_test$raw_data |>
filter(
source == "bootstrapped",
as.numeric(str_sub(.data$PC, start = 3L)) == pc_no
) |>
mutate(
distribution = "Sampling"
) |>
select(
.data$distribution,
.data$variable,
.data$index_loading,
.data$loading,
.data$iteration
) |>
# Reorder 'variable' column so variables plotted in ascending order by
# median bootstrapped loading.
group_by(.data$variable) |>
mutate(
median_index = stats::median(.data$index_loading)
) |>
ungroup() |>
mutate(
variable = fct_reorder(.data$variable, .data$median_index)
)
if (filter_boots) {
violin_data <- violin_data |>
group_by(.data$variable) |>
mutate(
first_quartile = stats::quantile(.data$index_loading, 0.25)
) |>
ungroup() |>
mutate(
largest_loading = .data$median_index == max(.data$median_index),
) |>
group_by(.data$iteration) |>
filter(
any(.data$largest_loading & .data$index_loading >= .data$first_quartile)
)
kept_iterations <- base::length(base::unique(violin_data$iteration))
}
violin_element <- geom_violin(
data = violin_data,
alpha = 0.5
)
} else {
violin_element <- NULL
}
out_plot <- plot_data |>
ggplot(
aes(
x = .data$index_loading,
y = .data$variable,
colour = .data$distribution
)
) +
violin_element +
geom_errorbar(
aes(
xmin = .data$low_limit,
xmax = .data$high_limit
)
) +
# geom_point(colour = "red") +
geom_text(aes(label = .data$loading_sign), size = 8, colour = "black", vjust = 0.4, family = "Consolas" ) +
scale_colour_manual(
values = c("Sampling" = "#F8766D", "Null" = "#00BFC4")
) +
labs(
title = glue("Index Loadings for PC{pc_no}"),
subtitle = subtitle,
colour = "Distribution",
y = "Variable",
x = "Index Loading"
)
out_plot
}- /ia/ uPC1 index loadings
Click here to view code.
iapc1_loadings_plot_horizonal <- plot_loadings_horizontal(ia_test, pc_no=1, filter_boots = FALSE) +
theme_minimal() + theme(legend.position = "none", plot.title = element_text(size = 12), text = element_text(size = 8), axis.text = element_text(size = 8))+ labs(title = "ia", subtitle = NULL)
iapc1_loadings_plot_horizonal - /ea/ uPC1 index loadings
Click here to view code.
eapc1_loadings_plot_horizonal <- plot_loadings_horizontal(ea_test, pc_no=1, filter_boots = FALSE) +
theme_minimal() + theme(legend.position = "none", plot.title = element_text(size = 12), axis.title.y = element_blank(), text = element_text(size = 8), axis.text = element_text(size = 8))+ labs(title = "ea", subtitle = NULL)
eapc1_loadings_plot_horizonal - /oa/ uPC1 index loadings
Click here to view code.
oapc1_loadings_plot_horizonal <- plot_loadings_horizontal(oa_test, pc_no=1, filter_boots = FALSE) +
theme_minimal() + theme(legend.position = "none", plot.title = element_text(size = 12), axis.title.y = element_blank(), text = element_text(size = 8), axis.text = element_text(size = 8))+ labs(title = "oa", subtitle = NULL)
oapc1_loadings_plot_horizonal 5./ua/ uPC1 index loadings
Click here to view code.
uapc1_loadings_plot_horizonal <- plot_loadings_horizontal(ua_test, pc_no=1, filter_boots = FALSE) +
theme_minimal() + theme(legend.position = "none", plot.title = element_text(size = 12), axis.title.y = element_blank(), text = element_text(size = 8), axis.text = element_text(size = 8))+ labs(title = "ua", subtitle = NULL)
uapc1_loadings_plot_horizonal - Create combined plot of uPC1 loadings and save
Click here to view code.
uPC1AllHorizontal <- grid.arrange(iapc1_loadings_plot_horizonal, eapc1_loadings_plot_horizonal, oapc1_loadings_plot_horizonal, uapc1_loadings_plot_horizonal, nrow = 1)Click here to view code.
ggsave(here("public", "Figures", "uPCA", "uPC1AllHorizontal.png"), uPC1AllHorizontal, width = 25, height =7 , units = "cm", bg = "white")7.3 Prepare and save uPCA data
- Prepare uPCA data
Click here to view code.
ia_pca <- ia_data %>%
# Remove the speaker column as this is not wanted by PCA.
select(-sequence, -MatchId) %>%
# We scale the variables (more on this in a moment)
prcomp(scale = TRUE)
ea_pca <- ea_data %>%
select(-sequence, -MatchId) %>%
prcomp(scale = TRUE)
ua_pca <- ua_data %>%
select(-sequence, -MatchId) %>%
prcomp(scale = TRUE)
oa_pca <- oa_data %>%
select(-sequence, -MatchId) %>%
prcomp(scale = TRUE)- Add sequences details
Click here to view code.
seqs_details <- read.csv(here("public", "Data", "opening_seqs_selected_data.csv")) - Create data frames
Click here to view code.
eaPCs = as.data.frame(ea_pca$x)
eaPCs2 = eaPCs %>% select(PC1,PC2,PC3, PC4)
iaPCs = as.data.frame(ia_pca$x)
iaPCs2 = iaPCs %>% select(PC1,PC2,PC3, PC4)
oaPCs = as.data.frame(oa_pca$x)
oaPCs2 = oaPCs %>% select(PC1,PC2,PC3, PC4)
uaPCs = as.data.frame(ua_pca$x)
uaPCs2 = uaPCs %>% select(PC1,PC2,PC3, PC4)
earesults = cbind(ea_data, eaPCs2)
iaresults = cbind(ia_data, iaPCs2)
oaresults = cbind(oa_data, oaPCs2)
uaresults = cbind(ua_data, uaPCs2)
earesults2 = left_join(earesults, seqs_details, by = c("MatchId", "sequence"))
iaresults2 = left_join(iaresults, seqs_details,by = c("MatchId", "sequence"))
oaresults2 = left_join(oaresults, seqs_details, by = c("MatchId", "sequence"))
uaresults2 = left_join(uaresults, seqs_details, by = c("MatchId", "sequence"))- Save as .csvs
Click here to view code.
write.csv(earesults2, here("public", "Data", "ea_uPCAresults.csv"))
write.csv(oaresults2, here("public", "Data","oa_uPCAresults.csv"))
write.csv(iaresults2, here("public", "Data", "ia_uPCAresults.csv"))
write.csv(uaresults2, here("public", "Data","ua_uPCAresults.csv"))7.4 uPCA visualisations
- Read in uPCA data if need be
Click here to view code.
earesults = read.csv(here("public", "Data", "ea_uPCAresults.csv"))
oaresults = read.csv(here("public", "Data","oa_uPCAresults.csv"))
iaresults = read.csv(here("public", "Data", "ia_uPCAresults.csv"))
uaresults = read.csv(here("public", "Data","ua_uPCAresults.csv"))- Define some PC categories, We’re calling everything above one ‘hi’, and below negative one ‘low’. Combine these into a single data frame of ‘extreme’ results.
Click here to view code.
earesults$PC1cat = "mid"
earesults[earesults$PC1 > 1,]$PC1cat = "hi"
earesults[earesults$PC1 < -1,]$PC1cat = "low"
earesultsextreme = earesults %>% filter(PC1cat != "mid")
oaresults$PC1cat = "mid"
oaresults[oaresults$PC1 > 1,]$PC1cat = "hi"
oaresults[oaresults$PC1 < -1,]$PC1cat = "low"
oaresultsextreme = oaresults %>% filter(PC1cat != "mid")
#flip ua
uaresults$PC1cat = "mid"
uaresults[uaresults$PC1 > 1,]$PC1cat = "low"
uaresults[uaresults$PC1 < -1,]$PC1cat = "hi"
uaresultsextreme = uaresults %>% filter(PC1cat != "mid")
iaresults$PC1cat = "mid"
iaresults[iaresults$PC1 > 1,]$PC1cat = "hi"
iaresults[iaresults$PC1 < -1,]$PC1cat = "low"
iaresultsextreme = iaresults %>% filter(PC1cat != "mid")
results_extreme_all <- rbind(earesults, oaresults, uaresults, iaresults)- Read in acoustic data
Click here to view code.
int <- read.csv(here("public", "Data", "intcentered_per_speaker.csv")) %>%
select(MatchId, sequence, time, intensity)
pitch <- read.csv(here("public", "Data", "pitch_centered_per_speaker_nofilter.csv")) %>%
select(MatchId, sequence, time, pitch)
pitch_int <- left_join(int, pitch)
pitch_int = pitch_int %>% group_by(MatchId) %>%
mutate(c_pitch = scale(pitch, center=TRUE, scale=FALSE),
c_intensity = scale(intensity, center=TRUE, scale=FALSE))
pitch = pitch_int
formants_filtered <- read_csv(here("public", "Data", "formants_filtered_all.csv")) %>%
dplyr::select(Vowel, MatchId, time, Formant, Frequency)
formants <- formants_filtered %>%
pivot_wider(
names_from = Formant,
values_from = Frequency
) - Combine with uPCA results
Click here to view code.
earesultspitch = left_join(earesultsextreme, pitch, by="MatchId")
iaresultspitch = left_join(iaresultsextreme, pitch, by="MatchId")
oaresultspitch = left_join(oaresultsextreme, pitch, by="MatchId")
uaresultspitch = left_join(uaresultsextreme, pitch, by="MatchId")
earesultsformants = left_join(earesultsextreme, formants, by="MatchId")
iaresultsformants = left_join(iaresultsextreme, formants, by="MatchId")
oaresultsformants = left_join(oaresultsextreme, formants, by="MatchId")
uaresultsformants = left_join( uaresultsextreme, formants, by="MatchId")
pc_pitch_results_all <- rbind(earesultspitch,iaresultspitch,oaresultspitch, uaresultspitch)
pc_formants_results_all <- rbind(earesultsformants, iaresultsformants, oaresultsformants, uaresultsformants)7.4.1 Combined plot by uPC1 category (Manuscript Figure 3)
- Plot duration by uPC1 category
Click here to view code.
results_extreme_duration <- results_extreme_all %>%
filter(PC1cat != "mid") %>%
rename(s_duration = Duration..z.scored)
results_extreme_duration$sequence <- factor(results_extreme_duration$sequence, levels = c("ia", "ea", "oa", "ua"))
duration_plot <- ggplot(results_extreme_duration, aes(x =PC1cat, y = s_duration, fill = PC1cat)) +
geom_violin() + # Change to violin plot
geom_point(stat = "summary", fun = "mean", color = "white", size = 2) + # Add points for mean
stat_summary(fun = "median", geom = "point", color = "black", size = 2) + # Add points for median
facet_wrap(~ sequence, nrow = 1) +
theme_minimal() +
theme(panel.background = element_rect(fill = "white"), legend.position = "none") +
labs(y = "z-scored duration", x = "") +
theme(axis.title.x = element_text(size = 8), axis.title.y = element_text(size = 8))
duration_plot- Plot intensity trajectories by uPC1 category
Click here to view code.
pc_pitch_results_all <- pc_pitch_results_all %>%
select(-sequence.x) %>%
rename(sequence = sequence.y)
pc_pitch_results_all$sequence <- factor(pc_pitch_results_all$sequence, levels = c("ia", "ea", "oa", "ua"))
uPCInt <- ggplot(pc_pitch_results_all, aes(x = time, y = intensity, colour = PC1cat, label = PC1cat)) +
geom_textsmooth(method = "loess", span = 0.5, linewidth = 1, size = 2) +
facet_wrap(~ sequence, nrow = 1) +
theme_minimal() +
labs(color = "uPC1 Category") +
theme(legend.position = "none",
axis.title.x = element_text(size = 8),
axis.title.y = element_text(size = 8))
uPCInt- Plot F1 trajectories by uPC1 category
Click here to view code.
pc_formants_results_all$sequence <- factor(pc_formants_results_all$sequence, levels = c("ia", "ea", "oa", "ua"))
uPCF1 <- ggplot(pc_formants_results_all, aes(x = time, y = F1_lobanov_2.0, colour = PC1cat, label = PC1cat)) +
geom_textsmooth(method = "loess", span = 0.5, linewidth = 1, size = 2) +
facet_wrap(~ sequence, nrow = 1) +
theme_minimal() +
labs(color = "uPC1 Category") +
theme(legend.position = "none",
axis.title.x = element_text(size = 8),
axis.title.y = element_text(size = 8))
uPCF1- Create combined plot
Click here to view code.
plots_combined <- cowplot::plot_grid(duration_plot, uPCInt, uPCF1,
labels = c("a", "b", "c"), ncol = 1)
plots_combined- Save
Click here to view code.
ggsave(here("public", "Figures", "uPCA", "uPC1DurationIntF1.png"), plots_combined, width = 15, height =15 , units = "cm", bg = "white")7.5 F2 trajectories: high and low uPC1 tokens /ia/ (Manuscript Figure 4)
This code creates a visualisation of the F2 trajectories of high and low uPC1 tokens of /ia/.
Click here to view code.
uPCF2ia <- ggplot(iaresultsformants, aes(x = time, y = F2_lobanov_2.0, colour = PC1cat, label = PC1cat)) +
geom_textsmooth(method = "loess", span = 0.5, linewidth = 1, size = 2) +
theme_minimal() +
theme(legend.position = "none",
axis.title.x = element_text(size = 8),
axis.title.y = element_text(size = 8))
uPCF2iaClick here to view code.
ggsave(here("public", "Figures", "uPCA", "uPC1F2ia.png"), uPCF2ia, width=9, height= 7 ,units="cm")7.6 Plot of High and low uPC1 formant trajectories with intensity (Manuscript Figure 5)
- Some initial data prep
Click here to view code.
sequences = pc_formants_results_all
pitch = pc_pitch_results_all
sequences$participant_gender = as.factor(sequences$participant_gender)
sequences$category = as.factor(sequences$category)
sequences$sequence = as.factor(sequences$sequence)
sequences$category_gender = interaction(sequences$participant_gender, sequences$category)7.6.1 Prepare formant trajectories
- View the data
Click here to view code.
vowels <- sequences
vowels %>%
head(10) %>%
kable() %>%
kable_styling(font_size = 11) %>%
scroll_box(width = "100%")| X.3 | sequence | MatchId | F1..fPC1 | F1..fPC2 | F1..fPC3 | F2..fPC1 | F2..fPC2 | F2..fPC3 | Pitch..fPC1 | Pitch..fPC2 | Pitch..fPC3 | Intensity..fPC1 | Intensity..fPC2 | Intensity..fPC3 | Duration..z.scored | PC1 | PC2 | PC3 | PC4 | X.2 | X.1 | X | Corpus | Speaker | category | participant_gender | Before.Match | Text | After.Match | Target.word | Target.orthography | Target.vowelCluster | Target.vowelCluster.start | Target.vowelCluster.end | joincode | word | word.alt.format | final | stress | moraPosition | complex | Language | participant_language | PC1cat | Vowel | time | F1_lobanov_2.0 | F2_lobanov_2.0 | category_gender |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 3 | ea | g_10;em_12_707;n_31354-n_31355;p_28;#=ew_69_149873;prefix=00524-;[0]=ew_0_6337 | 1.4364627 | 0.2993751 | 0.0397453 | -0.9850424 | 0.3894143 | -0.0055354 | 31.600232 | 6.860915 | -4.461722 | -0.8902482 | 10.481214 | 4.386573 | 0.3373410 | -1.488767 | 0.1477485 | 1.033077 | -0.2318555 | 68 | 110 | 112 | MAONZE | K001M | PresentElder | M | he | mea | tauhou | mea | mea | ea | 100.697 | 100.877 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | low | ea | 1 | 0.2697415 | 0.4512961 | M.PresentElder |
| 3 | ea | g_10;em_12_707;n_31354-n_31355;p_28;#=ew_69_149873;prefix=00524-;[0]=ew_0_6337 | 1.4364627 | 0.2993751 | 0.0397453 | -0.9850424 | 0.3894143 | -0.0055354 | 31.600232 | 6.860915 | -4.461722 | -0.8902482 | 10.481214 | 4.386573 | 0.3373410 | -1.488767 | 0.1477485 | 1.033077 | -0.2318555 | 68 | 110 | 112 | MAONZE | K001M | PresentElder | M | he | mea | tauhou | mea | mea | ea | 100.697 | 100.877 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | low | ea | 2 | 0.9771713 | 0.6559407 | M.PresentElder |
| 3 | ea | g_10;em_12_707;n_31354-n_31355;p_28;#=ew_69_149873;prefix=00524-;[0]=ew_0_6337 | 1.4364627 | 0.2993751 | 0.0397453 | -0.9850424 | 0.3894143 | -0.0055354 | 31.600232 | 6.860915 | -4.461722 | -0.8902482 | 10.481214 | 4.386573 | 0.3373410 | -1.488767 | 0.1477485 | 1.033077 | -0.2318555 | 68 | 110 | 112 | MAONZE | K001M | PresentElder | M | he | mea | tauhou | mea | mea | ea | 100.697 | 100.877 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | low | ea | 3 | 1.4925845 | 0.6381455 | M.PresentElder |
| 3 | ea | g_10;em_12_707;n_31354-n_31355;p_28;#=ew_69_149873;prefix=00524-;[0]=ew_0_6337 | 1.4364627 | 0.2993751 | 0.0397453 | -0.9850424 | 0.3894143 | -0.0055354 | 31.600232 | 6.860915 | -4.461722 | -0.8902482 | 10.481214 | 4.386573 | 0.3373410 | -1.488767 | 0.1477485 | 1.033077 | -0.2318555 | 68 | 110 | 112 | MAONZE | K001M | PresentElder | M | he | mea | tauhou | mea | mea | ea | 100.697 | 100.877 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | low | ea | 4 | 1.7654503 | 0.3334030 | M.PresentElder |
| 3 | ea | g_10;em_12_707;n_31354-n_31355;p_28;#=ew_69_149873;prefix=00524-;[0]=ew_0_6337 | 1.4364627 | 0.2993751 | 0.0397453 | -0.9850424 | 0.3894143 | -0.0055354 | 31.600232 | 6.860915 | -4.461722 | -0.8902482 | 10.481214 | 4.386573 | 0.3373410 | -1.488767 | 0.1477485 | 1.033077 | -0.2318555 | 68 | 110 | 112 | MAONZE | K001M | PresentElder | M | he | mea | tauhou | mea | mea | ea | 100.697 | 100.877 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | low | ea | 5 | 2.0989529 | 0.1443292 | M.PresentElder |
| 3 | ea | g_10;em_12_707;n_31354-n_31355;p_28;#=ew_69_149873;prefix=00524-;[0]=ew_0_6337 | 1.4364627 | 0.2993751 | 0.0397453 | -0.9850424 | 0.3894143 | -0.0055354 | 31.600232 | 6.860915 | -4.461722 | -0.8902482 | 10.481214 | 4.386573 | 0.3373410 | -1.488767 | 0.1477485 | 1.033077 | -0.2318555 | 68 | 110 | 112 | MAONZE | K001M | PresentElder | M | he | mea | tauhou | mea | mea | ea | 100.697 | 100.877 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | low | ea | 6 | 1.9271485 | -0.3383652 | M.PresentElder |
| 3 | ea | g_10;em_12_707;n_31354-n_31355;p_28;#=ew_69_149873;prefix=00524-;[0]=ew_0_6337 | 1.4364627 | 0.2993751 | 0.0397453 | -0.9850424 | 0.3894143 | -0.0055354 | 31.600232 | 6.860915 | -4.461722 | -0.8902482 | 10.481214 | 4.386573 | 0.3373410 | -1.488767 | 0.1477485 | 1.033077 | -0.2318555 | 68 | 110 | 112 | MAONZE | K001M | PresentElder | M | he | mea | tauhou | mea | mea | ea | 100.697 | 100.877 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | low | ea | 7 | 1.8564055 | -0.4028727 | M.PresentElder |
| 3 | ea | g_10;em_12_707;n_31354-n_31355;p_28;#=ew_69_149873;prefix=00524-;[0]=ew_0_6337 | 1.4364627 | 0.2993751 | 0.0397453 | -0.9850424 | 0.3894143 | -0.0055354 | 31.600232 | 6.860915 | -4.461722 | -0.8902482 | 10.481214 | 4.386573 | 0.3373410 | -1.488767 | 0.1477485 | 1.033077 | -0.2318555 | 68 | 110 | 112 | MAONZE | K001M | PresentElder | M | he | mea | tauhou | mea | mea | ea | 100.697 | 100.877 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | low | ea | 8 | 1.5936459 | -0.1737597 | M.PresentElder |
| 3 | ea | g_10;em_12_707;n_31354-n_31355;p_28;#=ew_69_149873;prefix=00524-;[0]=ew_0_6337 | 1.4364627 | 0.2993751 | 0.0397453 | -0.9850424 | 0.3894143 | -0.0055354 | 31.600232 | 6.860915 | -4.461722 | -0.8902482 | 10.481214 | 4.386573 | 0.3373410 | -1.488767 | 0.1477485 | 1.033077 | -0.2318555 | 68 | 110 | 112 | MAONZE | K001M | PresentElder | M | he | mea | tauhou | mea | mea | ea | 100.697 | 100.877 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | low | ea | 9 | 2.0282099 | -0.1448426 | M.PresentElder |
| 4 | ea | g_10;em_12_710;n_31357-n_31358;p_28;#=ew_69_149890;prefix=00532-;[0]=ew_0_6365 | -0.2938114 | -0.0357030 | -0.3236411 | 0.0990935 | -0.0026037 | 0.3933920 | 9.087662 | -7.878749 | -1.953018 | -5.2253531 | -3.810278 | 2.256708 | -0.3274888 | 1.104122 | 0.2901737 | 0.623884 | 0.0639671 | 70 | 112 | 114 | MAONZE | K001M | PresentElder | M | ngaa | mea | katoa | mea | mea | ea | 111.275 | 111.405 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | hi | ea | 1 | 0.5426073 | 0.4090325 | M.PresentElder |
- Pivot the data
Click here to view code.
vowels <- vowels %>%
pivot_longer(
cols = F1_lobanov_2.0:F2_lobanov_2.0, # Select the columns to turn into rows.
names_to = "Formant", # Name the column to indicate if data is F1 or F2,
values_to = "Frequency"
)
vowels %>%
head(10) %>%
kable() %>%
kable_styling(font_size = 11) %>%
scroll_box(width = "100%")| X.3 | sequence | MatchId | F1..fPC1 | F1..fPC2 | F1..fPC3 | F2..fPC1 | F2..fPC2 | F2..fPC3 | Pitch..fPC1 | Pitch..fPC2 | Pitch..fPC3 | Intensity..fPC1 | Intensity..fPC2 | Intensity..fPC3 | Duration..z.scored | PC1 | PC2 | PC3 | PC4 | X.2 | X.1 | X | Corpus | Speaker | category | participant_gender | Before.Match | Text | After.Match | Target.word | Target.orthography | Target.vowelCluster | Target.vowelCluster.start | Target.vowelCluster.end | joincode | word | word.alt.format | final | stress | moraPosition | complex | Language | participant_language | PC1cat | Vowel | time | category_gender | Formant | Frequency |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 3 | ea | g_10;em_12_707;n_31354-n_31355;p_28;#=ew_69_149873;prefix=00524-;[0]=ew_0_6337 | 1.436463 | 0.2993751 | 0.0397453 | -0.9850424 | 0.3894143 | -0.0055354 | 31.60023 | 6.860915 | -4.461722 | -0.8902482 | 10.48121 | 4.386573 | 0.337341 | -1.488767 | 0.1477485 | 1.033077 | -0.2318555 | 68 | 110 | 112 | MAONZE | K001M | PresentElder | M | he | mea | tauhou | mea | mea | ea | 100.697 | 100.877 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | low | ea | 1 | M.PresentElder | F1_lobanov_2.0 | 0.2697415 |
| 3 | ea | g_10;em_12_707;n_31354-n_31355;p_28;#=ew_69_149873;prefix=00524-;[0]=ew_0_6337 | 1.436463 | 0.2993751 | 0.0397453 | -0.9850424 | 0.3894143 | -0.0055354 | 31.60023 | 6.860915 | -4.461722 | -0.8902482 | 10.48121 | 4.386573 | 0.337341 | -1.488767 | 0.1477485 | 1.033077 | -0.2318555 | 68 | 110 | 112 | MAONZE | K001M | PresentElder | M | he | mea | tauhou | mea | mea | ea | 100.697 | 100.877 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | low | ea | 1 | M.PresentElder | F2_lobanov_2.0 | 0.4512961 |
| 3 | ea | g_10;em_12_707;n_31354-n_31355;p_28;#=ew_69_149873;prefix=00524-;[0]=ew_0_6337 | 1.436463 | 0.2993751 | 0.0397453 | -0.9850424 | 0.3894143 | -0.0055354 | 31.60023 | 6.860915 | -4.461722 | -0.8902482 | 10.48121 | 4.386573 | 0.337341 | -1.488767 | 0.1477485 | 1.033077 | -0.2318555 | 68 | 110 | 112 | MAONZE | K001M | PresentElder | M | he | mea | tauhou | mea | mea | ea | 100.697 | 100.877 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | low | ea | 2 | M.PresentElder | F1_lobanov_2.0 | 0.9771713 |
| 3 | ea | g_10;em_12_707;n_31354-n_31355;p_28;#=ew_69_149873;prefix=00524-;[0]=ew_0_6337 | 1.436463 | 0.2993751 | 0.0397453 | -0.9850424 | 0.3894143 | -0.0055354 | 31.60023 | 6.860915 | -4.461722 | -0.8902482 | 10.48121 | 4.386573 | 0.337341 | -1.488767 | 0.1477485 | 1.033077 | -0.2318555 | 68 | 110 | 112 | MAONZE | K001M | PresentElder | M | he | mea | tauhou | mea | mea | ea | 100.697 | 100.877 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | low | ea | 2 | M.PresentElder | F2_lobanov_2.0 | 0.6559407 |
| 3 | ea | g_10;em_12_707;n_31354-n_31355;p_28;#=ew_69_149873;prefix=00524-;[0]=ew_0_6337 | 1.436463 | 0.2993751 | 0.0397453 | -0.9850424 | 0.3894143 | -0.0055354 | 31.60023 | 6.860915 | -4.461722 | -0.8902482 | 10.48121 | 4.386573 | 0.337341 | -1.488767 | 0.1477485 | 1.033077 | -0.2318555 | 68 | 110 | 112 | MAONZE | K001M | PresentElder | M | he | mea | tauhou | mea | mea | ea | 100.697 | 100.877 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | low | ea | 3 | M.PresentElder | F1_lobanov_2.0 | 1.4925845 |
| 3 | ea | g_10;em_12_707;n_31354-n_31355;p_28;#=ew_69_149873;prefix=00524-;[0]=ew_0_6337 | 1.436463 | 0.2993751 | 0.0397453 | -0.9850424 | 0.3894143 | -0.0055354 | 31.60023 | 6.860915 | -4.461722 | -0.8902482 | 10.48121 | 4.386573 | 0.337341 | -1.488767 | 0.1477485 | 1.033077 | -0.2318555 | 68 | 110 | 112 | MAONZE | K001M | PresentElder | M | he | mea | tauhou | mea | mea | ea | 100.697 | 100.877 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | low | ea | 3 | M.PresentElder | F2_lobanov_2.0 | 0.6381455 |
| 3 | ea | g_10;em_12_707;n_31354-n_31355;p_28;#=ew_69_149873;prefix=00524-;[0]=ew_0_6337 | 1.436463 | 0.2993751 | 0.0397453 | -0.9850424 | 0.3894143 | -0.0055354 | 31.60023 | 6.860915 | -4.461722 | -0.8902482 | 10.48121 | 4.386573 | 0.337341 | -1.488767 | 0.1477485 | 1.033077 | -0.2318555 | 68 | 110 | 112 | MAONZE | K001M | PresentElder | M | he | mea | tauhou | mea | mea | ea | 100.697 | 100.877 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | low | ea | 4 | M.PresentElder | F1_lobanov_2.0 | 1.7654503 |
| 3 | ea | g_10;em_12_707;n_31354-n_31355;p_28;#=ew_69_149873;prefix=00524-;[0]=ew_0_6337 | 1.436463 | 0.2993751 | 0.0397453 | -0.9850424 | 0.3894143 | -0.0055354 | 31.60023 | 6.860915 | -4.461722 | -0.8902482 | 10.48121 | 4.386573 | 0.337341 | -1.488767 | 0.1477485 | 1.033077 | -0.2318555 | 68 | 110 | 112 | MAONZE | K001M | PresentElder | M | he | mea | tauhou | mea | mea | ea | 100.697 | 100.877 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | low | ea | 4 | M.PresentElder | F2_lobanov_2.0 | 0.3334030 |
| 3 | ea | g_10;em_12_707;n_31354-n_31355;p_28;#=ew_69_149873;prefix=00524-;[0]=ew_0_6337 | 1.436463 | 0.2993751 | 0.0397453 | -0.9850424 | 0.3894143 | -0.0055354 | 31.60023 | 6.860915 | -4.461722 | -0.8902482 | 10.48121 | 4.386573 | 0.337341 | -1.488767 | 0.1477485 | 1.033077 | -0.2318555 | 68 | 110 | 112 | MAONZE | K001M | PresentElder | M | he | mea | tauhou | mea | mea | ea | 100.697 | 100.877 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | low | ea | 5 | M.PresentElder | F1_lobanov_2.0 | 2.0989529 |
| 3 | ea | g_10;em_12_707;n_31354-n_31355;p_28;#=ew_69_149873;prefix=00524-;[0]=ew_0_6337 | 1.436463 | 0.2993751 | 0.0397453 | -0.9850424 | 0.3894143 | -0.0055354 | 31.60023 | 6.860915 | -4.461722 | -0.8902482 | 10.48121 | 4.386573 | 0.337341 | -1.488767 | 0.1477485 | 1.033077 | -0.2318555 | 68 | 110 | 112 | MAONZE | K001M | PresentElder | M | he | mea | tauhou | mea | mea | ea | 100.697 | 100.877 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | low | ea | 5 | M.PresentElder | F2_lobanov_2.0 | 0.1443292 |
- Nest the data
Click here to view code.
vowels$Vowel = vowels$sequence
vowels <- vowels %>%
group_by(Vowel, Formant, PC1cat) %>%
nest()- Fit GAMs to the data
Click here to view code.
vowels <- vowels %>%
mutate(
model = map(
data, # We are applying a function to the entries of the `data` column.
# This is the function we are applying (introduced with a ~)
~ bam(
# Here's our formula.
Frequency ~ participant_gender +
s(time, by=participant_gender, k=5),
data = .x, # Here's our pronoun.
# Then some arguments to speed up the model fit.
method = 'fREML',
discrete = TRUE,
nthreads = 2
)
)
)- Get predictions
Click here to view code.
to_predict <- list(
"time" = seq(from=1, to=9, by=1), # All years
"participant_gender" = c("M", "F")
)
vowels <- vowels %>%
mutate(
prediction = map(
model, # This time we're applying the function to all the models.
# We again introduce the function with '~', and indicate where the model
# goes with '.x'.
~ get_predictions(model = .x, cond = to_predict, print.summary = FALSE)
)
)- View predictions
Click here to view code.
vowels$prediction[[1]] %>%
head() %>%
kable() %>%
kable_styling() %>%
scroll_box(width = "100%")| participant_gender | time | fit | CI |
|---|---|---|---|
| M | 1 | 0.7404713 | 0.1037006 |
| F | 1 | 0.7295707 | 0.0940714 |
| M | 2 | 1.2598329 | 0.0689358 |
| F | 2 | 1.2265593 | 0.0627091 |
| M | 3 | 1.7033801 | 0.0748911 |
| F | 3 | 1.6807448 | 0.0681337 |
- Format predictions
Click here to view code.
predictions <- vowels %>%
select(
Vowel, Formant, PC1cat, prediction
) %>%
unnest(prediction)
predictions %>%
head() %>%
kable() %>%
kable_styling() %>%
scroll_box(width = "100%")| Vowel | Formant | PC1cat | participant_gender | time | fit | CI |
|---|---|---|---|---|---|---|
| ea | F1_lobanov_2.0 | low | M | 1 | 0.7404713 | 0.1037006 |
| ea | F1_lobanov_2.0 | low | F | 1 | 0.7295707 | 0.0940714 |
| ea | F1_lobanov_2.0 | low | M | 2 | 1.2598329 | 0.0689358 |
| ea | F1_lobanov_2.0 | low | F | 2 | 1.2265593 | 0.0627091 |
| ea | F1_lobanov_2.0 | low | M | 3 | 1.7033801 | 0.0748911 |
| ea | F1_lobanov_2.0 | low | F | 3 | 1.6807448 | 0.0681337 |
Click here to view code.
predictions <- predictions %>%
select( # Remove unneeded variables
-CI
) %>%
pivot_wider( # Pivot
names_from = Formant,
values_from = fit
)
predictions %>%
head() %>%
kable() %>%
kable_styling() %>%
scroll_box(width = "100%")| Vowel | PC1cat | participant_gender | time | F1_lobanov_2.0 | F2_lobanov_2.0 |
|---|---|---|---|---|---|
| ea | low | M | 1 | 0.7404713 | 0.6698052 |
| ea | low | F | 1 | 0.7295707 | 0.9172131 |
| ea | low | M | 2 | 1.2598329 | 0.5245497 |
| ea | low | F | 2 | 1.2265593 | 0.7956188 |
| ea | low | M | 3 | 1.7033801 | 0.3382139 |
| ea | low | F | 3 | 1.6807448 | 0.5886874 |
- Get first observations which we will use in the plot
Click here to view code.
predictions$Vowelcat = paste(predictions$Vowel,predictions$PC1cat)
first_obs <- predictions %>%
group_by(Vowelcat, participant_gender) %>%
slice(which.min(time))
ffirst_obs <- predictions %>% filter(participant_gender == "F") %>%
group_by(Vowelcat) %>%
slice(which.min(time))7.6.2 Prepare intensity trajectories
- Some data prep
Click here to view code.
pitch$MatchTime = paste(pitch$MatchId, pitch$time)
sequences$MatchTime = paste(sequences$MatchId, sequences$time)
sequenceswithpitch = left_join(sequences, pitch)
sequenceswithpitch$participant_gender = as.factor(sequenceswithpitch$participant_gender)
sequenceswithpitch$category = as.factor(sequenceswithpitch$category)
sequenceswithpitch$sequence = as.factor(sequenceswithpitch$sequence)
sequenceswithpitch$category_gender = interaction(sequenceswithpitch$participant_gender, sequenceswithpitch$category)
vowels <- sequenceswithpitch
vowels %>%
head(10) %>%
kable() %>%
kable_styling(font_size = 11) %>%
scroll_box(width = "100%")| X.3 | sequence | MatchId | F1..fPC1 | F1..fPC2 | F1..fPC3 | F2..fPC1 | F2..fPC2 | F2..fPC3 | Pitch..fPC1 | Pitch..fPC2 | Pitch..fPC3 | Intensity..fPC1 | Intensity..fPC2 | Intensity..fPC3 | Duration..z.scored | PC1 | PC2 | PC3 | PC4 | X.2 | X.1 | X | Corpus | Speaker | category | participant_gender | Before.Match | Text | After.Match | Target.word | Target.orthography | Target.vowelCluster | Target.vowelCluster.start | Target.vowelCluster.end | joincode | word | word.alt.format | final | stress | moraPosition | complex | Language | participant_language | PC1cat | Vowel | time | F1_lobanov_2.0 | F2_lobanov_2.0 | category_gender | MatchTime | intensity | pitch | c_pitch | c_intensity |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 3 | ea | g_10;em_12_707;n_31354-n_31355;p_28;#=ew_69_149873;prefix=00524-;[0]=ew_0_6337 | 1.4364627 | 0.2993751 | 0.0397453 | -0.9850424 | 0.3894143 | -0.0055354 | 31.600232 | 6.860915 | -4.461722 | -0.8902482 | 10.481214 | 4.386573 | 0.3373410 | -1.488767 | 0.1477485 | 1.033077 | -0.2318555 | 68 | 110 | 112 | MAONZE | K001M | PresentElder | M | he | mea | tauhou | mea | mea | ea | 100.697 | 100.877 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | low | ea | 1 | 0.2697415 | 0.4512961 | M.PresentElder | g_10;em_12_707;n_31354-n_31355;p_28;#=ew_69_149873;prefix=00524-;[0]=ew_0_6337 1 | NA | NA | NA | NA |
| 3 | ea | g_10;em_12_707;n_31354-n_31355;p_28;#=ew_69_149873;prefix=00524-;[0]=ew_0_6337 | 1.4364627 | 0.2993751 | 0.0397453 | -0.9850424 | 0.3894143 | -0.0055354 | 31.600232 | 6.860915 | -4.461722 | -0.8902482 | 10.481214 | 4.386573 | 0.3373410 | -1.488767 | 0.1477485 | 1.033077 | -0.2318555 | 68 | 110 | 112 | MAONZE | K001M | PresentElder | M | he | mea | tauhou | mea | mea | ea | 100.697 | 100.877 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | low | ea | 2 | 0.9771713 | 0.6559407 | M.PresentElder | g_10;em_12_707;n_31354-n_31355;p_28;#=ew_69_149873;prefix=00524-;[0]=ew_0_6337 2 | 74 | 152 | 5.571429 | 4.285714 |
| 3 | ea | g_10;em_12_707;n_31354-n_31355;p_28;#=ew_69_149873;prefix=00524-;[0]=ew_0_6337 | 1.4364627 | 0.2993751 | 0.0397453 | -0.9850424 | 0.3894143 | -0.0055354 | 31.600232 | 6.860915 | -4.461722 | -0.8902482 | 10.481214 | 4.386573 | 0.3373410 | -1.488767 | 0.1477485 | 1.033077 | -0.2318555 | 68 | 110 | 112 | MAONZE | K001M | PresentElder | M | he | mea | tauhou | mea | mea | ea | 100.697 | 100.877 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | low | ea | 3 | 1.4925845 | 0.6381455 | M.PresentElder | g_10;em_12_707;n_31354-n_31355;p_28;#=ew_69_149873;prefix=00524-;[0]=ew_0_6337 3 | 75 | 152 | 5.571429 | 5.285714 |
| 3 | ea | g_10;em_12_707;n_31354-n_31355;p_28;#=ew_69_149873;prefix=00524-;[0]=ew_0_6337 | 1.4364627 | 0.2993751 | 0.0397453 | -0.9850424 | 0.3894143 | -0.0055354 | 31.600232 | 6.860915 | -4.461722 | -0.8902482 | 10.481214 | 4.386573 | 0.3373410 | -1.488767 | 0.1477485 | 1.033077 | -0.2318555 | 68 | 110 | 112 | MAONZE | K001M | PresentElder | M | he | mea | tauhou | mea | mea | ea | 100.697 | 100.877 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | low | ea | 4 | 1.7654503 | 0.3334030 | M.PresentElder | g_10;em_12_707;n_31354-n_31355;p_28;#=ew_69_149873;prefix=00524-;[0]=ew_0_6337 4 | 74 | 152 | 5.571429 | 4.285714 |
| 3 | ea | g_10;em_12_707;n_31354-n_31355;p_28;#=ew_69_149873;prefix=00524-;[0]=ew_0_6337 | 1.4364627 | 0.2993751 | 0.0397453 | -0.9850424 | 0.3894143 | -0.0055354 | 31.600232 | 6.860915 | -4.461722 | -0.8902482 | 10.481214 | 4.386573 | 0.3373410 | -1.488767 | 0.1477485 | 1.033077 | -0.2318555 | 68 | 110 | 112 | MAONZE | K001M | PresentElder | M | he | mea | tauhou | mea | mea | ea | 100.697 | 100.877 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | low | ea | 5 | 2.0989529 | 0.1443292 | M.PresentElder | g_10;em_12_707;n_31354-n_31355;p_28;#=ew_69_149873;prefix=00524-;[0]=ew_0_6337 5 | 73 | 149 | 2.571429 | 3.285714 |
| 3 | ea | g_10;em_12_707;n_31354-n_31355;p_28;#=ew_69_149873;prefix=00524-;[0]=ew_0_6337 | 1.4364627 | 0.2993751 | 0.0397453 | -0.9850424 | 0.3894143 | -0.0055354 | 31.600232 | 6.860915 | -4.461722 | -0.8902482 | 10.481214 | 4.386573 | 0.3373410 | -1.488767 | 0.1477485 | 1.033077 | -0.2318555 | 68 | 110 | 112 | MAONZE | K001M | PresentElder | M | he | mea | tauhou | mea | mea | ea | 100.697 | 100.877 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | low | ea | 6 | 1.9271485 | -0.3383652 | M.PresentElder | g_10;em_12_707;n_31354-n_31355;p_28;#=ew_69_149873;prefix=00524-;[0]=ew_0_6337 6 | 72 | 145 | -1.428571 | 2.285714 |
| 3 | ea | g_10;em_12_707;n_31354-n_31355;p_28;#=ew_69_149873;prefix=00524-;[0]=ew_0_6337 | 1.4364627 | 0.2993751 | 0.0397453 | -0.9850424 | 0.3894143 | -0.0055354 | 31.600232 | 6.860915 | -4.461722 | -0.8902482 | 10.481214 | 4.386573 | 0.3373410 | -1.488767 | 0.1477485 | 1.033077 | -0.2318555 | 68 | 110 | 112 | MAONZE | K001M | PresentElder | M | he | mea | tauhou | mea | mea | ea | 100.697 | 100.877 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | low | ea | 7 | 1.8564055 | -0.4028727 | M.PresentElder | g_10;em_12_707;n_31354-n_31355;p_28;#=ew_69_149873;prefix=00524-;[0]=ew_0_6337 7 | 67 | 139 | -7.428571 | -2.714286 |
| 3 | ea | g_10;em_12_707;n_31354-n_31355;p_28;#=ew_69_149873;prefix=00524-;[0]=ew_0_6337 | 1.4364627 | 0.2993751 | 0.0397453 | -0.9850424 | 0.3894143 | -0.0055354 | 31.600232 | 6.860915 | -4.461722 | -0.8902482 | 10.481214 | 4.386573 | 0.3373410 | -1.488767 | 0.1477485 | 1.033077 | -0.2318555 | 68 | 110 | 112 | MAONZE | K001M | PresentElder | M | he | mea | tauhou | mea | mea | ea | 100.697 | 100.877 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | low | ea | 8 | 1.5936459 | -0.1737597 | M.PresentElder | g_10;em_12_707;n_31354-n_31355;p_28;#=ew_69_149873;prefix=00524-;[0]=ew_0_6337 8 | 53 | 136 | -10.428571 | -16.714286 |
| 3 | ea | g_10;em_12_707;n_31354-n_31355;p_28;#=ew_69_149873;prefix=00524-;[0]=ew_0_6337 | 1.4364627 | 0.2993751 | 0.0397453 | -0.9850424 | 0.3894143 | -0.0055354 | 31.600232 | 6.860915 | -4.461722 | -0.8902482 | 10.481214 | 4.386573 | 0.3373410 | -1.488767 | 0.1477485 | 1.033077 | -0.2318555 | 68 | 110 | 112 | MAONZE | K001M | PresentElder | M | he | mea | tauhou | mea | mea | ea | 100.697 | 100.877 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | low | ea | 9 | 2.0282099 | -0.1448426 | M.PresentElder | g_10;em_12_707;n_31354-n_31355;p_28;#=ew_69_149873;prefix=00524-;[0]=ew_0_6337 9 | NA | NA | NA | NA |
| 4 | ea | g_10;em_12_710;n_31357-n_31358;p_28;#=ew_69_149890;prefix=00532-;[0]=ew_0_6365 | -0.2938114 | -0.0357030 | -0.3236411 | 0.0990935 | -0.0026037 | 0.3933920 | 9.087662 | -7.878749 | -1.953018 | -5.2253531 | -3.810278 | 2.256708 | -0.3274888 | 1.104122 | 0.2901737 | 0.623884 | 0.0639671 | 70 | 112 | 114 | MAONZE | K001M | PresentElder | M | ngaa | mea | katoa | mea | mea | ea | 111.275 | 111.405 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | hi | ea | 1 | 0.5426073 | 0.4090325 | M.PresentElder | g_10;em_12_710;n_31357-n_31358;p_28;#=ew_69_149890;prefix=00532-;[0]=ew_0_6365 1 | NA | NA | NA | NA |
- Nest data
Click here to view code.
vowels$Vowel = vowels$sequence
vowels <- vowels %>%
group_by(Vowel, PC1cat) %>%
nest()- Fit GAMs to the data
Click here to view code.
vowels <- vowels %>%
mutate(
model = map(
data, # We are applying a function to the entries of the `data` column.
# This is the function we are applying (introduced with a ~)
~ bam(
# Here's our formula.
c_intensity ~ participant_gender +
s(time, by=participant_gender, k=5),
data = .x, # Here's our pronoun.
# Then some arguments to speed up the model fit.
method = 'fREML',
discrete = TRUE,
nthreads = 2
)
)
)- Get predictions
Click here to view code.
to_predict <- list(
"time" = seq(from=1, to=9, by=1), # All years
"participant_gender" = c("M", "F")
)
# BTW: Get prediction will just assume the average value for any predictors not
# mentioned (in this case, Speech_rate).
vowels <- vowels %>%
mutate(
prediction = map(
model, # This time we're applying the function to all the models.
# We again introduce the function with '~', and indicate where the model
# goes with '.x'.
~ get_predictions(model = .x, cond = to_predict, print.summary = FALSE)
)
)- View predictions
Click here to view code.
vowels$prediction[[1]] %>%
head() %>%
kable() %>%
kable_styling() %>%
scroll_box(width = "100%")| participant_gender | time | fit | CI |
|---|---|---|---|
| M | 1 | 4.511616 | 0.7639374 |
| F | 1 | 3.410783 | 0.6966628 |
| M | 2 | 4.124922 | 0.3373198 |
| F | 2 | 3.234433 | 0.3050947 |
| M | 3 | 3.652382 | 0.2749016 |
| F | 3 | 2.996439 | 0.2501579 |
- Format predictions
Click here to view code.
apredictions <- vowels %>%
select(
Vowel, prediction
) %>%
unnest(prediction)
apredictions %>%
head() %>%
kable() %>%
kable_styling() %>%
scroll_box(width = "100%")| PC1cat | Vowel | participant_gender | time | fit | CI |
|---|---|---|---|---|---|
| low | ea | M | 1 | 4.511616 | 0.7639374 |
| low | ea | F | 1 | 3.410783 | 0.6966628 |
| low | ea | M | 2 | 4.124922 | 0.3373198 |
| low | ea | F | 2 | 3.234433 | 0.3050947 |
| low | ea | M | 3 | 3.652382 | 0.2749016 |
| low | ea | F | 3 | 2.996439 | 0.2501579 |
Click here to view code.
apredictions <- apredictions %>%
select( # Remove unneeded variables
-CI
)
apredictions %>%
head() %>%
kable() %>%
kable_styling() %>%
scroll_box(width = "100%")| PC1cat | Vowel | participant_gender | time | fit |
|---|---|---|---|---|
| low | ea | M | 1 | 4.511616 |
| low | ea | F | 1 | 3.410783 |
| low | ea | M | 2 | 4.124922 |
| low | ea | F | 2 | 3.234433 |
| low | ea | M | 3 | 3.652382 |
| low | ea | F | 3 | 2.996439 |
- Get first predictions for plot
Click here to view code.
apredictions$Vowelcat = paste(apredictions$Vowel,apredictions$PC1cat)
predictions$Vowelcat = paste(predictions$Vowel,predictions$PC1cat)
predictions$Intensity = apredictions$fit
ffirst_obs_amp <- apredictions %>% filter(participant_gender == "F") %>%
group_by(Vowelcat) %>%
slice(which.min(time))7.6.3 Generate monophthong elipses labels + create final plot
- Read in monophthongs data
Click here to view code.
monophthongs = read.csv(here("public", "Data", "monophthongsfinal.csv"))- Calculate mean for each monophthong
Click here to view code.
i_means <- monophthongs %>%
filter(Target.teAkaSegment == "i") %>%
mutate(meanF1 = mean(F1_lobanov_2.0)) %>%
mutate(meanF2 = mean(F2_lobanov_2.0)) %>%
select(Target.teAkaSegment, meanF1, meanF2) %>%
unique()
e_means <- monophthongs %>%
filter(Target.teAkaSegment == "e") %>%
mutate(meanF1 = mean(F1_lobanov_2.0)) %>%
mutate(meanF2 = mean(F2_lobanov_2.0)) %>%
select(Target.teAkaSegment, meanF1, meanF2) %>%
unique()
a_means <- monophthongs %>%
filter(Target.teAkaSegment == "a") %>%
mutate(meanF1 = mean(F1_lobanov_2.0)) %>%
mutate(meanF2 = mean(F2_lobanov_2.0)) %>%
select(Target.teAkaSegment, meanF1, meanF2) %>%
unique()
o_means <- monophthongs %>%
filter(Target.teAkaSegment == "o") %>%
mutate(meanF1 = mean(F1_lobanov_2.0)) %>%
mutate(meanF2 = mean(F2_lobanov_2.0)) %>%
select(Target.teAkaSegment, meanF1, meanF2) %>%
unique()
u_means <- monophthongs %>%
filter(Target.teAkaSegment == "u") %>%
mutate(meanF1 = mean(F1_lobanov_2.0)) %>%
mutate(meanF2 = mean(F2_lobanov_2.0)) %>%
select(Target.teAkaSegment, meanF1, meanF2) %>%
unique()- Combine into a data frame
Click here to view code.
monophthong_means <- rbind(i_means, e_means, a_means, o_means, u_means) %>%
rename(F1_lobanov_2.0 = meanF1) %>%
rename(F2_lobanov_2.0 = meanF2)- Make combined plot
Click here to view code.
femalemono = monophthongs %>% filter(participant_gender == "F")
femaleseq = predictions %>% filter(participant_gender == "F")
fplot <- femalemono %>%
ggplot(aes(x = F2_lobanov_2.0, y = F1_lobanov_2.0, colour = Target.teAkaSegment)) +
stat_ellipse(level = 0.67, geom = "polygon", alpha = 0.1, aes(fill = Target.teAkaSegment), show.legend = FALSE) +
scale_x_reverse() + scale_y_reverse() +
scale_fill_grey(start = 0.1, end = 0.9) +
geom_text(data= monophthong_means,
aes(x = F2_lobanov_2.0, y = F1_lobanov_2.0, label = Target.teAkaSegment), show.legend = FALSE, size = 2) +
geom_path(data = femaleseq, aes(
x = F2_lobanov_2.0,
y = F1_lobanov_2.0,
colour = PC1cat, linewidth = Intensity),
size = 1, show.legend = TRUE,
arrow = arrow(length = unit(1, "mm")), size = 1) +
scale_color_manual(values = c("hi" = "#F8766D", "low" = "#00BFC4")) +
guides(colour = guide_legend(title = "uPC1 Category"), fill = "none", linewidth = "none")
fplot + theme_classic() + scale_linewidth_continuous(range = c(.001, .85)) +
facet_wrap(~Vowel, nrow = 2) +
theme(
axis.title = element_text(size = 6),
axis.text = element_text(size = 6),
legend.position = "bottom",
legend.title = element_text(size = 6),
legend.text = element_text(size = 6)
)- Save
Click here to view code.
ggsave(here("public", "Figures", "uPCA", "lowhighUPC1TrajectorieswithInt.pdf"), width= 11, height= 12.5,units="cm")8 Are the different trajectories for high and low uPC1 tokens a product of different monophthong spaces? (Manuscript footnote 1)
As mentioned in Footnote 1 of the manuscript, it could be possible that speakers with predominantly high uPC1 scores and predominantly low uPC1 scores have different monophthong spaces, and that the different trajectories we see between high and low uPC1 tokens are actually a reflection of these differences. To investigate this, we plot the vowel spaces of men and women who predominantly low uPC1 scores. The following chunks provide the code.
- Read in data if need be. This section uses results_extreme_all data frame and pc_formants_results_all, defined in Section 7.4
Click here to view code.
monophthongs = read.csv(here("public", "Data", "monophthongsfinal.csv")) - Count number of high and low scoring tokens per speaker
Click here to view code.
per_speaker_PC_results_overlall <- results_extreme_all %>%
filter(PC1cat != "mid") %>%
select(MatchId, Speaker, PC1cat, sequence) %>%
group_by(Speaker, PC1cat) %>%
count()- Essentially pivot the data
Click here to view code.
per_speaker_PC_results_counts <- per_speaker_PC_results_overlall %>%
group_by(Speaker, PC1cat) %>%
summarise(n = sum(n), .groups = "drop") %>%
pivot_wider(names_from = PC1cat, values_from = n, values_fill = list(n = 0))
colnames(per_speaker_PC_results_counts) <- c("Speaker", "hi_n", "low_n")- Determine if the have more or high low scoring tokens, or if its a tie
Click here to view code.
per_speaker_PC_results_counts <- per_speaker_PC_results_counts %>%
mutate(predominant_PC1cat = case_when(
hi_n > low_n ~ "hi",
hi_n < low_n ~ "low",
TRUE ~ "tie"
))- Combine with monophthongs, filter out tokens from speakers with tied high and low tokens.
Click here to view code.
monophthongs <- left_join(monophthongs, per_speaker_PC_results_counts) %>%
filter(predominant_PC1cat != "tie") - Combine with sequences data
Click here to view code.
sequences <- left_join(pc_formants_results_all, per_speaker_PC_results_counts, by = "Speaker") - Do some data prep for the sequences data
Click here to view code.
sequences$participant_gender = as.factor(sequences$participant_gender)
sequences$category = as.factor(sequences$category)
sequences$Vowel = as.factor(sequences$Vowel)
sequences$category_gender = interaction(sequences$participant_gender, sequences$category)
sequences <- left_join(sequences, per_speaker_PC_results_counts)This may not be the best way of doing things, but we create separate data frames for the sequences+ monopthongs of high and low scoring speakers, and then plot the sequence trajectories using GAMs.
Click here to view code.
high_scoring_sequences <- sequences %>%
filter(predominant_PC1cat == "hi")
low_scoring_sequences <- sequences %>%
filter(predominant_PC1cat == "low")
high_scoring_mono <- monophthongs %>%
filter(predominant_PC1cat == "hi")
low_scoring_mono <- monophthongs %>%
filter(predominant_PC1cat == "low") 8.1 High scoring speakers only, men and women
- View data for high scoring seqs
Click here to view code.
vowels <- high_scoring_sequences
vowels %>%
head(10) %>%
kable() %>%
kable_styling(font_size = 11) %>%
scroll_box(width = "100%")| X.3 | sequence | MatchId | F1..fPC1 | F1..fPC2 | F1..fPC3 | F2..fPC1 | F2..fPC2 | F2..fPC3 | Pitch..fPC1 | Pitch..fPC2 | Pitch..fPC3 | Intensity..fPC1 | Intensity..fPC2 | Intensity..fPC3 | Duration..z.scored | PC1 | PC2 | PC3 | PC4 | X.2 | X.1 | X | Corpus | Speaker | category | participant_gender | Before.Match | Text | After.Match | Target.word | Target.orthography | Target.vowelCluster | Target.vowelCluster.start | Target.vowelCluster.end | joincode | word | word.alt.format | final | stress | moraPosition | complex | Language | participant_language | PC1cat | Vowel | time | F1_lobanov_2.0 | F2_lobanov_2.0 | hi_n | low_n | predominant_PC1cat | category_gender |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 3 | ea | g_10;em_12_707;n_31354-n_31355;p_28;#=ew_69_149873;prefix=00524-;[0]=ew_0_6337 | 1.4364627 | 0.2993751 | 0.0397453 | -0.9850424 | 0.3894143 | -0.0055354 | 31.600232 | 6.860915 | -4.461722 | -0.8902482 | 10.481214 | 4.386573 | 0.3373410 | -1.488767 | 0.1477485 | 1.033077 | -0.2318555 | 68 | 110 | 112 | MAONZE | K001M | PresentElder | M | he | mea | tauhou | mea | mea | ea | 100.697 | 100.877 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | low | ea | 1 | 0.2697415 | 0.4512961 | 66 | 27 | hi | M.PresentElder |
| 3 | ea | g_10;em_12_707;n_31354-n_31355;p_28;#=ew_69_149873;prefix=00524-;[0]=ew_0_6337 | 1.4364627 | 0.2993751 | 0.0397453 | -0.9850424 | 0.3894143 | -0.0055354 | 31.600232 | 6.860915 | -4.461722 | -0.8902482 | 10.481214 | 4.386573 | 0.3373410 | -1.488767 | 0.1477485 | 1.033077 | -0.2318555 | 68 | 110 | 112 | MAONZE | K001M | PresentElder | M | he | mea | tauhou | mea | mea | ea | 100.697 | 100.877 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | low | ea | 2 | 0.9771713 | 0.6559407 | 66 | 27 | hi | M.PresentElder |
| 3 | ea | g_10;em_12_707;n_31354-n_31355;p_28;#=ew_69_149873;prefix=00524-;[0]=ew_0_6337 | 1.4364627 | 0.2993751 | 0.0397453 | -0.9850424 | 0.3894143 | -0.0055354 | 31.600232 | 6.860915 | -4.461722 | -0.8902482 | 10.481214 | 4.386573 | 0.3373410 | -1.488767 | 0.1477485 | 1.033077 | -0.2318555 | 68 | 110 | 112 | MAONZE | K001M | PresentElder | M | he | mea | tauhou | mea | mea | ea | 100.697 | 100.877 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | low | ea | 3 | 1.4925845 | 0.6381455 | 66 | 27 | hi | M.PresentElder |
| 3 | ea | g_10;em_12_707;n_31354-n_31355;p_28;#=ew_69_149873;prefix=00524-;[0]=ew_0_6337 | 1.4364627 | 0.2993751 | 0.0397453 | -0.9850424 | 0.3894143 | -0.0055354 | 31.600232 | 6.860915 | -4.461722 | -0.8902482 | 10.481214 | 4.386573 | 0.3373410 | -1.488767 | 0.1477485 | 1.033077 | -0.2318555 | 68 | 110 | 112 | MAONZE | K001M | PresentElder | M | he | mea | tauhou | mea | mea | ea | 100.697 | 100.877 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | low | ea | 4 | 1.7654503 | 0.3334030 | 66 | 27 | hi | M.PresentElder |
| 3 | ea | g_10;em_12_707;n_31354-n_31355;p_28;#=ew_69_149873;prefix=00524-;[0]=ew_0_6337 | 1.4364627 | 0.2993751 | 0.0397453 | -0.9850424 | 0.3894143 | -0.0055354 | 31.600232 | 6.860915 | -4.461722 | -0.8902482 | 10.481214 | 4.386573 | 0.3373410 | -1.488767 | 0.1477485 | 1.033077 | -0.2318555 | 68 | 110 | 112 | MAONZE | K001M | PresentElder | M | he | mea | tauhou | mea | mea | ea | 100.697 | 100.877 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | low | ea | 5 | 2.0989529 | 0.1443292 | 66 | 27 | hi | M.PresentElder |
| 3 | ea | g_10;em_12_707;n_31354-n_31355;p_28;#=ew_69_149873;prefix=00524-;[0]=ew_0_6337 | 1.4364627 | 0.2993751 | 0.0397453 | -0.9850424 | 0.3894143 | -0.0055354 | 31.600232 | 6.860915 | -4.461722 | -0.8902482 | 10.481214 | 4.386573 | 0.3373410 | -1.488767 | 0.1477485 | 1.033077 | -0.2318555 | 68 | 110 | 112 | MAONZE | K001M | PresentElder | M | he | mea | tauhou | mea | mea | ea | 100.697 | 100.877 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | low | ea | 6 | 1.9271485 | -0.3383652 | 66 | 27 | hi | M.PresentElder |
| 3 | ea | g_10;em_12_707;n_31354-n_31355;p_28;#=ew_69_149873;prefix=00524-;[0]=ew_0_6337 | 1.4364627 | 0.2993751 | 0.0397453 | -0.9850424 | 0.3894143 | -0.0055354 | 31.600232 | 6.860915 | -4.461722 | -0.8902482 | 10.481214 | 4.386573 | 0.3373410 | -1.488767 | 0.1477485 | 1.033077 | -0.2318555 | 68 | 110 | 112 | MAONZE | K001M | PresentElder | M | he | mea | tauhou | mea | mea | ea | 100.697 | 100.877 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | low | ea | 7 | 1.8564055 | -0.4028727 | 66 | 27 | hi | M.PresentElder |
| 3 | ea | g_10;em_12_707;n_31354-n_31355;p_28;#=ew_69_149873;prefix=00524-;[0]=ew_0_6337 | 1.4364627 | 0.2993751 | 0.0397453 | -0.9850424 | 0.3894143 | -0.0055354 | 31.600232 | 6.860915 | -4.461722 | -0.8902482 | 10.481214 | 4.386573 | 0.3373410 | -1.488767 | 0.1477485 | 1.033077 | -0.2318555 | 68 | 110 | 112 | MAONZE | K001M | PresentElder | M | he | mea | tauhou | mea | mea | ea | 100.697 | 100.877 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | low | ea | 8 | 1.5936459 | -0.1737597 | 66 | 27 | hi | M.PresentElder |
| 3 | ea | g_10;em_12_707;n_31354-n_31355;p_28;#=ew_69_149873;prefix=00524-;[0]=ew_0_6337 | 1.4364627 | 0.2993751 | 0.0397453 | -0.9850424 | 0.3894143 | -0.0055354 | 31.600232 | 6.860915 | -4.461722 | -0.8902482 | 10.481214 | 4.386573 | 0.3373410 | -1.488767 | 0.1477485 | 1.033077 | -0.2318555 | 68 | 110 | 112 | MAONZE | K001M | PresentElder | M | he | mea | tauhou | mea | mea | ea | 100.697 | 100.877 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | low | ea | 9 | 2.0282099 | -0.1448426 | 66 | 27 | hi | M.PresentElder |
| 4 | ea | g_10;em_12_710;n_31357-n_31358;p_28;#=ew_69_149890;prefix=00532-;[0]=ew_0_6365 | -0.2938114 | -0.0357030 | -0.3236411 | 0.0990935 | -0.0026037 | 0.3933920 | 9.087662 | -7.878749 | -1.953018 | -5.2253531 | -3.810278 | 2.256708 | -0.3274888 | 1.104122 | 0.2901737 | 0.623884 | 0.0639671 | 70 | 112 | 114 | MAONZE | K001M | PresentElder | M | ngaa | mea | katoa | mea | mea | ea | 111.275 | 111.405 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | hi | ea | 1 | 0.5426073 | 0.4090325 | 66 | 27 | hi | M.PresentElder |
- Pivot data
Click here to view code.
vowels <- vowels %>%
pivot_longer(
cols = F1_lobanov_2.0:F2_lobanov_2.0, # Select the columns to turn into rows.
names_to = "Formant", # Name the column to indicate if data is F1 or F2,
values_to = "Frequency"
)- Nest data
Click here to view code.
vowels <- vowels %>%
group_by(Vowel, Formant, PC1cat) %>%
nest()- Fit GAMs to the data
Click here to view code.
vowels <- vowels %>%
mutate(
model = map(
data, # We are applying a function to the entries of the `data` column.
# This is the function we are applying (introduced with a ~)
~ bam(
# Here's our formula.
Frequency ~ participant_gender +
s(time, by=participant_gender, k=5),
data = .x, # Here's our pronoun.
# Then some arguments to speed up the model fit.
method = 'fREML',
discrete = TRUE,
nthreads = 2
)
)
)- Get predictions
Click here to view code.
to_predict <- list(
"time" = seq(from=1, to=9, by=1), # All years
"participant_gender" = c("M", "F")
)
# BTW: Get prediction will just assume the average value for any predictors not
# mentioned (in this case, Speech_rate).
vowels <- vowels %>%
mutate(
prediction = map(
model, # This time we're applying the function to all the models.
# We again introduce the function with '~', and indicate where the model
# goes with '.x'.
~ get_predictions(model = .x, cond = to_predict, print.summary = FALSE)
)
)- View predictions
Click here to view code.
vowels$prediction[[1]] %>%
head() %>%
kable() %>%
kable_styling() %>%
scroll_box(width = "100%")| participant_gender | time | fit | CI |
|---|---|---|---|
| M | 1 | 0.5800590 | 0.1526756 |
| F | 1 | 0.7463039 | 0.1813609 |
| M | 2 | 1.0391641 | 0.0987235 |
| F | 2 | 1.1826107 | 0.1203777 |
| M | 3 | 1.4379810 | 0.1051796 |
| F | 3 | 1.6225532 | 0.1297158 |
- Formant predictions
Click here to view code.
predictions <- vowels %>%
select(
Vowel, Formant, PC1cat, prediction
) %>%
unnest(prediction)
predictions %>%
head() %>%
kable() %>%
kable_styling() %>%
scroll_box(width = "100%")| Vowel | Formant | PC1cat | participant_gender | time | fit | CI |
|---|---|---|---|---|---|---|
| ea | F1_lobanov_2.0 | low | M | 1 | 0.5800590 | 0.1526756 |
| ea | F1_lobanov_2.0 | low | F | 1 | 0.7463039 | 0.1813609 |
| ea | F1_lobanov_2.0 | low | M | 2 | 1.0391641 | 0.0987235 |
| ea | F1_lobanov_2.0 | low | F | 2 | 1.1826107 | 0.1203777 |
| ea | F1_lobanov_2.0 | low | M | 3 | 1.4379810 | 0.1051796 |
| ea | F1_lobanov_2.0 | low | F | 3 | 1.6225532 | 0.1297158 |
Click here to view code.
predictions <- predictions %>%
select( # Remove unneeded variables
-CI
) %>%
pivot_wider( # Pivot
names_from = Formant,
values_from = fit
)
predictions %>%
head() %>%
kable() %>%
kable_styling() %>%
scroll_box(width = "100%")| Vowel | PC1cat | participant_gender | time | F1_lobanov_2.0 | F2_lobanov_2.0 |
|---|---|---|---|---|---|
| ea | low | M | 1 | 0.5800590 | 0.7383871 |
| ea | low | F | 1 | 0.7463039 | 1.1363690 |
| ea | low | M | 2 | 1.0391641 | 0.6737784 |
| ea | low | F | 2 | 1.1826107 | 1.1063994 |
| ea | low | M | 3 | 1.4379810 | 0.5386139 |
| ea | low | F | 3 | 1.6225532 | 0.9631273 |
- More predictions formatting
Click here to view code.
predictions$Vowelcat = paste(predictions$Vowel,predictions$PC1cat)
first_obs <- predictions %>%
group_by(Vowelcat, participant_gender) %>%
slice(which.min(time))- Calculate means to label monophthong ellipses
Click here to view code.
i_means <- monophthongs %>%
filter(Target.teAkaSegment == "i") %>%
mutate(meanF1 = mean(F1_lobanov_2.0)) %>%
mutate(meanF2 = mean(F2_lobanov_2.0)) %>%
select(Target.teAkaSegment, meanF1, meanF2) %>%
unique()
e_means <- monophthongs %>%
filter(Target.teAkaSegment == "e") %>%
mutate(meanF1 = mean(F1_lobanov_2.0)) %>%
mutate(meanF2 = mean(F2_lobanov_2.0)) %>%
select(Target.teAkaSegment, meanF1, meanF2) %>%
unique()
a_means <- monophthongs %>%
filter(Target.teAkaSegment == "a") %>%
mutate(meanF1 = mean(F1_lobanov_2.0)) %>%
mutate(meanF2 = mean(F2_lobanov_2.0)) %>%
select(Target.teAkaSegment, meanF1, meanF2) %>%
unique()
o_means <- monophthongs %>%
filter(Target.teAkaSegment == "o") %>%
mutate(meanF1 = mean(F1_lobanov_2.0)) %>%
mutate(meanF2 = mean(F2_lobanov_2.0)) %>%
select(Target.teAkaSegment, meanF1, meanF2) %>%
unique()
u_means <- monophthongs %>%
filter(Target.teAkaSegment == "u") %>%
mutate(meanF1 = mean(F1_lobanov_2.0)) %>%
mutate(meanF2 = mean(F2_lobanov_2.0)) %>%
select(Target.teAkaSegment, meanF1, meanF2) %>%
unique()
monophthong_means <- rbind(i_means, e_means, a_means, o_means, u_means) %>%
rename(F1_lobanov_2.0 = meanF1) %>%
rename(F2_lobanov_2.0 = meanF2)- Plot women
Click here to view code.
femalemono = high_scoring_mono %>% filter(participant_gender == "F")
femaleseq = predictions %>% filter(participant_gender == "F")
fplot <- femalemono %>%
ggplot(aes(x = F2_lobanov_2.0, y = F1_lobanov_2.0, colour = Target.teAkaSegment)) +
stat_ellipse(level = 0.67, geom = "polygon", alpha = 0.1, aes(fill = Target.teAkaSegment), show.legend = FALSE) +
scale_x_reverse() + scale_y_reverse() +
scale_fill_grey(start = 0.1, end = 0.9) +
geom_text(data= monophthong_means,
aes(x = F2_lobanov_2.0, y = F1_lobanov_2.0, label = Target.teAkaSegment), show.legend = FALSE, size = 2) +
geom_path(data = femaleseq, aes(
x = F2_lobanov_2.0,
y = F1_lobanov_2.0,
colour = PC1cat),
size = 1, show.legend = TRUE,
arrow = arrow(length = unit(1, "mm")), size = 1) +
scale_color_manual(values = c("hi" = "#F8766D", "low" = "#00BFC4")) +
guides(colour = guide_legend(title = "uPC1 Category"), fill = "none", linewidth = "none")
fplot + theme_classic() +
facet_wrap(~Vowel, nrow = 2) +
labs(title = "Sequences and monopthongs: women with predominantely high uPC1 scores") +
theme(
text = element_text(size = 6),
legend.position = "bottom"
)- Plot men
Click here to view code.
malemono = high_scoring_mono %>% filter(participant_gender == "M")
maleseq = predictions %>% filter(participant_gender == "M")
mplot <- malemono %>%
ggplot(aes(x = F2_lobanov_2.0, y = F1_lobanov_2.0, colour = Target.teAkaSegment)) +
stat_ellipse(level = 0.67, geom = "polygon", alpha = 0.1, aes(fill = Target.teAkaSegment), show.legend = FALSE) +
scale_x_reverse() + scale_y_reverse() +
scale_fill_grey(start = 0.1, end = 0.9) +
geom_text(data= monophthong_means,
aes(x = F2_lobanov_2.0, y = F1_lobanov_2.0, label = Target.teAkaSegment), show.legend = FALSE, size = 2) +
geom_path(data = maleseq, aes(
x = F2_lobanov_2.0,
y = F1_lobanov_2.0,
colour = PC1cat),
size = 1, show.legend = TRUE,
arrow = arrow(length = unit(1, "mm")), size = 1) +
scale_color_manual(values = c("hi" = "#F8766D", "low" = "#00BFC4")) +
guides(colour = guide_legend(title = "uPC1 Category"), fill = "none", linewidth = "none")
mplot + theme_classic()+
facet_wrap(~Vowel, nrow = 2) +
labs(title = "Sequences and monopthongs: men with predominantely high uPC1 scores") +
theme(
text = element_text(size = 6),
legend.position = "bottom"
)8.2 Low scoring speakers only, men and women
- View data for low scoring seqs
Click here to view code.
vowels <- low_scoring_sequences
vowels %>%
head(10) %>%
kable() %>%
kable_styling(font_size = 11) %>%
scroll_box(width = "100%")| X.3 | sequence | MatchId | F1..fPC1 | F1..fPC2 | F1..fPC3 | F2..fPC1 | F2..fPC2 | F2..fPC3 | Pitch..fPC1 | Pitch..fPC2 | Pitch..fPC3 | Intensity..fPC1 | Intensity..fPC2 | Intensity..fPC3 | Duration..z.scored | PC1 | PC2 | PC3 | PC4 | X.2 | X.1 | X | Corpus | Speaker | category | participant_gender | Before.Match | Text | After.Match | Target.word | Target.orthography | Target.vowelCluster | Target.vowelCluster.start | Target.vowelCluster.end | joincode | word | word.alt.format | final | stress | moraPosition | complex | Language | participant_language | PC1cat | Vowel | time | F1_lobanov_2.0 | F2_lobanov_2.0 | hi_n | low_n | predominant_PC1cat | category_gender |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 15 | ea | g_1007;em_12_95259;n_108219-n_108220;p_284;#=ew_69_210492;prefix=58163-;[0]=ew_0_623659 | 1.8414877 | 0.186432 | -0.2839358 | -0.6724291 | 0.5781306 | -0.4208177 | -12.120353 | -4.034826 | 0.8405222 | 9.772280 | 0.587162 | -0.2066952 | 0.0714091 | -1.031297 | -0.8540191 | -0.0800264 | 0.1915901 | 8215 | 13981 | 14191 | MAONZE | MU01M | Historical | M | e | mea | ko | mea | mea | ea | 95.245 | 95.405 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | low | ea | 1 | 0.5373210 | 1.2388271 | 20 | 28 | low | M.Historical |
| 15 | ea | g_1007;em_12_95259;n_108219-n_108220;p_284;#=ew_69_210492;prefix=58163-;[0]=ew_0_623659 | 1.8414877 | 0.186432 | -0.2839358 | -0.6724291 | 0.5781306 | -0.4208177 | -12.120353 | -4.034826 | 0.8405222 | 9.772280 | 0.587162 | -0.2066952 | 0.0714091 | -1.031297 | -0.8540191 | -0.0800264 | 0.1915901 | 8215 | 13981 | 14191 | MAONZE | MU01M | Historical | M | e | mea | ko | mea | mea | ea | 95.245 | 95.405 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | low | ea | 2 | 1.1987973 | 0.7442307 | 20 | 28 | low | M.Historical |
| 15 | ea | g_1007;em_12_95259;n_108219-n_108220;p_284;#=ew_69_210492;prefix=58163-;[0]=ew_0_623659 | 1.8414877 | 0.186432 | -0.2839358 | -0.6724291 | 0.5781306 | -0.4208177 | -12.120353 | -4.034826 | 0.8405222 | 9.772280 | 0.587162 | -0.2066952 | 0.0714091 | -1.031297 | -0.8540191 | -0.0800264 | 0.1915901 | 8215 | 13981 | 14191 | MAONZE | MU01M | Historical | M | e | mea | ko | mea | mea | ea | 95.245 | 95.405 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | low | ea | 3 | 1.7279783 | 0.3170793 | 20 | 28 | low | M.Historical |
| 15 | ea | g_1007;em_12_95259;n_108219-n_108220;p_284;#=ew_69_210492;prefix=58163-;[0]=ew_0_623659 | 1.8414877 | 0.186432 | -0.2839358 | -0.6724291 | 0.5781306 | -0.4208177 | -12.120353 | -4.034826 | 0.8405222 | 9.772280 | 0.587162 | -0.2066952 | 0.0714091 | -1.031297 | -0.8540191 | -0.0800264 | 0.1915901 | 8215 | 13981 | 14191 | MAONZE | MU01M | Historical | M | e | mea | ko | mea | mea | ea | 95.245 | 95.405 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | low | ea | 4 | 2.3172936 | 0.2833568 | 20 | 28 | low | M.Historical |
| 15 | ea | g_1007;em_12_95259;n_108219-n_108220;p_284;#=ew_69_210492;prefix=58163-;[0]=ew_0_623659 | 1.8414877 | 0.186432 | -0.2839358 | -0.6724291 | 0.5781306 | -0.4208177 | -12.120353 | -4.034826 | 0.8405222 | 9.772280 | 0.587162 | -0.2066952 | 0.0714091 | -1.031297 | -0.8540191 | -0.0800264 | 0.1915901 | 8215 | 13981 | 14191 | MAONZE | MU01M | Historical | M | e | mea | ko | mea | mea | ea | 95.245 | 95.405 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | low | ea | 5 | 1.8482468 | 0.0754015 | 20 | 28 | low | M.Historical |
| 15 | ea | g_1007;em_12_95259;n_108219-n_108220;p_284;#=ew_69_210492;prefix=58163-;[0]=ew_0_623659 | 1.8414877 | 0.186432 | -0.2839358 | -0.6724291 | 0.5781306 | -0.4208177 | -12.120353 | -4.034826 | 0.8405222 | 9.772280 | 0.587162 | -0.2066952 | 0.0714091 | -1.031297 | -0.8540191 | -0.0800264 | 0.1915901 | 8215 | 13981 | 14191 | MAONZE | MU01M | Historical | M | e | mea | ko | mea | mea | ea | 95.245 | 95.405 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | low | ea | 6 | 1.2228510 | -0.0819700 | 20 | 28 | low | M.Historical |
| 15 | ea | g_1007;em_12_95259;n_108219-n_108220;p_284;#=ew_69_210492;prefix=58163-;[0]=ew_0_623659 | 1.8414877 | 0.186432 | -0.2839358 | -0.6724291 | 0.5781306 | -0.4208177 | -12.120353 | -4.034826 | 0.8405222 | 9.772280 | 0.587162 | -0.2066952 | 0.0714091 | -1.031297 | -0.8540191 | -0.0800264 | 0.1915901 | 8215 | 13981 | 14191 | MAONZE | MU01M | Historical | M | e | mea | ko | mea | mea | ea | 95.245 | 95.405 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | low | ea | 7 | 2.3654009 | -0.0707292 | 20 | 28 | low | M.Historical |
| 15 | ea | g_1007;em_12_95259;n_108219-n_108220;p_284;#=ew_69_210492;prefix=58163-;[0]=ew_0_623659 | 1.8414877 | 0.186432 | -0.2839358 | -0.6724291 | 0.5781306 | -0.4208177 | -12.120353 | -4.034826 | 0.8405222 | 9.772280 | 0.587162 | -0.2066952 | 0.0714091 | -1.031297 | -0.8540191 | -0.0800264 | 0.1915901 | 8215 | 13981 | 14191 | MAONZE | MU01M | Historical | M | e | mea | ko | mea | mea | ea | 95.245 | 95.405 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | low | ea | 8 | NA | 0.0135770 | 20 | 28 | low | M.Historical |
| 15 | ea | g_1007;em_12_95259;n_108219-n_108220;p_284;#=ew_69_210492;prefix=58163-;[0]=ew_0_623659 | 1.8414877 | 0.186432 | -0.2839358 | -0.6724291 | 0.5781306 | -0.4208177 | -12.120353 | -4.034826 | 0.8405222 | 9.772280 | 0.587162 | -0.2066952 | 0.0714091 | -1.031297 | -0.8540191 | -0.0800264 | 0.1915901 | 8215 | 13981 | 14191 | MAONZE | MU01M | Historical | M | e | mea | ko | mea | mea | ea | 95.245 | 95.405 | mea ea | mea | mea | TRUE | yes | 1 | no | M | M | low | ea | 9 | NA | 0.1709486 | 20 | 28 | low | M.Historical |
| 197 | ea | g_1051;em_12_97738;n_109566-n_109567;p_203;#=ew_69_241754;prefix=87824-;[0]=ew_0_649005 | -0.9214995 | 1.478383 | 0.0683188 | -2.0008984 | -0.3725911 | -0.7364066 | -5.064278 | -5.130406 | 5.8262860 | 7.863936 | 3.506005 | -0.0794503 | 1.0021708 | -1.281185 | -0.8619286 | -0.3166463 | -0.0986521 | 12711 | 21281 | 21623 | MAONZE | WU02M | Historical | F | ko | Aotea . | Kurahaupo: - | Aotea . | aotea | ea | 145.551 | 145.781 | aotea ea | aotea | aotea | TRUE | no | 3 | no | M | M | low | ea | 1 | -0.5425697 | NA | 2 | 6 | low | F.Historical |
- Pivot data
Click here to view code.
vowels <- vowels %>%
pivot_longer(
cols = F1_lobanov_2.0:F2_lobanov_2.0, # Select the columns to turn into rows.
names_to = "Formant", # Name the column to indicate if data is F1 or F2,
values_to = "Frequency"
)- Nest data
Click here to view code.
vowels <- vowels %>%
group_by(Vowel, Formant, PC1cat) %>%
nest()- Fit GAMs to the data
Click here to view code.
vowels <- vowels %>%
mutate(
model = map(
data, # We are applying a function to the entries of the `data` column.
# This is the function we are applying (introduced with a ~)
~ bam(
# Here's our formula.
Frequency ~ participant_gender +
s(time, by=participant_gender, k=5),
data = .x, # Here's our pronoun.
# Then some arguments to speed up the model fit.
method = 'fREML',
discrete = TRUE,
nthreads = 2
)
)
)- Get predictions
Click here to view code.
to_predict <- list(
"time" = seq(from=1, to=9, by=1), # All years
"participant_gender" = c("M", "F")
)
# BTW: Get prediction will just assume the average value for any predictors not
# mentioned (in this case, Speech_rate).
vowels <- vowels %>%
mutate(
prediction = map(
model, # This time we're applying the function to all the models.
# We again introduce the function with '~', and indicate where the model
# goes with '.x'.
~ get_predictions(model = .x, cond = to_predict, print.summary = FALSE)
)
)- View predictions
Click here to view code.
vowels$prediction[[1]] %>%
head() %>%
kable() %>%
kable_styling() %>%
scroll_box(width = "100%")| participant_gender | time | fit | CI |
|---|---|---|---|
| M | 1 | 0.8508458 | 0.1339840 |
| F | 1 | 0.7254217 | 0.1083475 |
| M | 2 | 1.4081336 | 0.0899359 |
| F | 2 | 1.2417965 | 0.0719859 |
| M | 3 | 1.8738094 | 0.0978850 |
| F | 3 | 1.6981314 | 0.0780793 |
- Format predictions
Click here to view code.
predictions <- vowels %>%
select(
Vowel, Formant, PC1cat, prediction
) %>%
unnest(prediction)
predictions %>%
head() %>%
kable() %>%
kable_styling() %>%
scroll_box(width = "100%")| Vowel | Formant | PC1cat | participant_gender | time | fit | CI |
|---|---|---|---|---|---|---|
| ea | F1_lobanov_2.0 | low | M | 1 | 0.8508458 | 0.1339840 |
| ea | F1_lobanov_2.0 | low | F | 1 | 0.7254217 | 0.1083475 |
| ea | F1_lobanov_2.0 | low | M | 2 | 1.4081336 | 0.0899359 |
| ea | F1_lobanov_2.0 | low | F | 2 | 1.2417965 | 0.0719859 |
| ea | F1_lobanov_2.0 | low | M | 3 | 1.8738094 | 0.0978850 |
| ea | F1_lobanov_2.0 | low | F | 3 | 1.6981314 | 0.0780793 |
Click here to view code.
predictions <- predictions %>%
select( # Remove unneeded variables
-CI
) %>%
pivot_wider( # Pivot
names_from = Formant,
values_from = fit
)
predictions %>%
head() %>%
kable() %>%
kable_styling() %>%
scroll_box(width = "100%")| Vowel | PC1cat | participant_gender | time | F1_lobanov_2.0 | F2_lobanov_2.0 |
|---|---|---|---|---|---|
| ea | low | M | 1 | 0.8508458 | 0.6296614 |
| ea | low | F | 1 | 0.7254217 | 0.8633470 |
| ea | low | M | 2 | 1.4081336 | 0.4215653 |
| ea | low | F | 2 | 1.2417965 | 0.7065416 |
| ea | low | M | 3 | 1.8738094 | 0.2011722 |
| ea | low | F | 3 | 1.6981314 | 0.4800903 |
- More predictions formatting
Click here to view code.
predictions$Vowelcat = paste(predictions$Vowel,predictions$PC1cat)
first_obs <- predictions %>%
group_by(Vowelcat, participant_gender) %>%
slice(which.min(time))- Plot women
Click here to view code.
femalemono = low_scoring_mono %>% filter(participant_gender == "F")
femaleseq = predictions %>% filter(participant_gender == "F")
fplot <- femalemono %>%
ggplot(aes(x = F2_lobanov_2.0, y = F1_lobanov_2.0, colour = Target.teAkaSegment)) +
stat_ellipse(level = 0.67, geom = "polygon", alpha = 0.1, aes(fill = Target.teAkaSegment), show.legend = FALSE) +
scale_x_reverse() + scale_y_reverse() +
scale_fill_grey(start = 0.1, end = 0.9) +
geom_text(data= monophthong_means,
aes(x = F2_lobanov_2.0, y = F1_lobanov_2.0, label = Target.teAkaSegment), show.legend = FALSE, size = 2) +
geom_path(data = femaleseq, aes(
x = F2_lobanov_2.0,
y = F1_lobanov_2.0,
colour = PC1cat),
size = 1, show.legend = TRUE,
arrow = arrow(length = unit(1, "mm")), size = 1) +
scale_color_manual(values = c("hi" = "#F8766D", "low" = "#00BFC4")) +
guides(colour = guide_legend(title = "uPC1 Category"), fill = "none", linewidth = "none")
fplot + theme_classic() +
facet_wrap(~Vowel, nrow = 2) +
labs(title = "Sequences and monopthongs: women with predominantely low uPC1 scores") +
theme(
text = element_text(size = 6),
legend.position = "bottom"
)- Plot men
Click here to view code.
malemono = low_scoring_mono %>% filter(participant_gender == "M")
maleseq = predictions %>% filter(participant_gender == "M")
mplot <- malemono %>%
ggplot(aes(x = F2_lobanov_2.0, y = F1_lobanov_2.0, colour = Target.teAkaSegment)) +
stat_ellipse(level = 0.67, geom = "polygon", alpha = 0.1, aes(fill = Target.teAkaSegment), show.legend = FALSE) +
scale_x_reverse() + scale_y_reverse() +
scale_fill_grey(start = 0.1, end = 0.9) +
geom_text(data= monophthong_means,
aes(x = F2_lobanov_2.0, y = F1_lobanov_2.0, label = Target.teAkaSegment), show.legend = FALSE, size = 2) +
geom_path(data = maleseq, aes(
x = F2_lobanov_2.0,
y = F1_lobanov_2.0,
colour = PC1cat),
size = 1, show.legend = TRUE,
arrow = arrow(length = unit(1, "mm")), size = 1) +
scale_color_manual(values = c("hi" = "#F8766D", "low" = "#00BFC4")) +
guides(colour = guide_legend(title = "uPC1 Category"), fill = "none", linewidth = "none")
mplot + theme_classic()+
facet_wrap(~Vowel, nrow = 2) +
labs(title = "Sequences and monopthongs: men with predominantely low uPC1 scores") +
theme(
text = element_text(size = 6),
legend.position = "bottom"
)9 Regression analysis (Manuscript §4.2)
9.1 Custom functions
- Function to get the local mean monophthong duration within a window of X seconds (default 10) either side of a target timestamp in a target transcript
Click here to view code.
local_mean_duration = function(target_transcript, target_timestamp, window=10) {
monopthong_dat %>%
filter(transcript == target_transcript, abs(target_timestamp - timestamp) <= window) %>%
pull(duration) %>%
mean(.)
}- Function to center variables
Click here to view code.
c. <- function (x) scale(x, scale = FALSE)- Function to calculate VIFs and display them in a table
Click here to view code.
display_vif = function(mod, output_kable=TRUE, ...) {
table <- vif(mod, type="terms")
# Check if VIFs or GVIFs have been calculated
if (is.null(dim(table))) {
table <- vif_table(table, output_kable, ...)
} else {
table <- gvif_table(table, output_kable, ...)
}
return(table)
}- Function to neatly display a VIF table
Click here to view code.
vif_table = function(table, output_kable=TRUE, ...) {
table = table %>%
data.frame() %>%
rlang::set_names(c("vif")) %>%
rownames_to_column("parameter") %>%
mutate(
parameter = parameter %>%
str_replace_all(
.,
"(?<=^|\\:)(?:c\\.\\()([^:]+)(?:\\))(?=$|\\:)",
"\\1 (centered)"
) %>%
str_replace_all(., fixed(":"), " × ")
)
if (output_kable) {
table = table %>%
kable(digits=3, escape=F, col.names=c("Parameter", "VIF"), align="lr", ...) %>%
kable_styling()
}
return(table)
}- Function to neatly display a GVIF table
Click here to view code.
gvif_table = function(table, output_kable=TRUE, ...) {
table = table %>%
data.frame() %>%
rlang::set_names(c("gvif", "df", "transformed")) %>%
rownames_to_column("parameter") %>%
mutate(
parameter = parameter %>%
str_replace_all(
.,
"(?<=^|\\:)(?:c\\.\\()([^:]+)(?:\\))(?=$|\\:)",
"\\1 (centered)"
) %>%
str_replace_all(., fixed(":"), " × "),
transformed = transformed ^ 2
)
if (output_kable) {
table = table %>%
kable(digits=3, escape=F, col.names=c("Parameter", "GVIF", "df", "Transformed GVIF"), align="lrrr", ...) %>%
kable_styling()
}
return(table)
}- Function to create table of the regression results with the Estimate, SE, df, t, and p values rounded to 3 decimal places
Click here to view code.
format_lmer_table <- function(model, digits = 3) {
model_summary <- summary(model)
coefs <- as.data.frame(coef(summary(model)))
coefs <- coefs %>%
rename(Estimate = Estimate, SE = `Std. Error`, df = `df`,
t = `t value`, p = `Pr(>|t|)`) %>%
mutate(
across(c(Estimate, SE, t), ~ round(.x, digits)),
df = round(df, 0),
p = ifelse(p < 0.001, "<0.001", sprintf(paste0("%.", digits, "f"), p))
)
return(coefs)
}9.2 Calculate local speech rate for each sequence token
This code is used to determine the local speech rate measures used in the regression analyses. Used to determine the mean duration of monophthongs in a transcript within a window of 10 seconds either side of a given sequence.
- Monophthongs data if needed
Click here to view code.
monophthongs = read.csv(here("public", "Data", "monophthongsfinal.csv"))- Calculate monophthong duration
Click here to view code.
monophthongs$duration = monophthongs$Target.teAkaSegment.end - monophthongs$Target.teAkaSegment.start
mono <- monophthongs %>%
select(Transcript, Speaker, duration, Target.teAkaSegment.start)
monopthong_dat <- mono %>%
rename(timestamp = Target.teAkaSegment.start) %>%
rename(transcript = Transcript)- Add local speech rate (using function defined above) for /ia/ tokens + save data frame
Click here to view code.
ia <- read.csv(here("public", "Data", "ia_uPCAresults.csv")) %>%
left_join(
read.csv(here("public", "Data", "MAONZE_opening_seqs.csv"), header=TRUE, encoding="UTF-8") %>%
select(Transcript, MatchId, Target.vowelCluster.start)
)
ia <- ia %>%
rename(target_timestamp = Target.vowelCluster.start) %>%
rename(target_transcript = Transcript)
ia <- ia %>%
mutate(
mean_rate = map2_dbl(ia$target_transcript, ia$target_timestamp, local_mean_duration, window = 10)
)
ia <- ia %>%
drop_na(mean_rate)
write.csv(ia, here("public", "Data","ia_PC_results_local_rate.csv"))- Add local speech rate for /ea/ tokens + save data frame
Click here to view code.
ea <- read.csv(here("public", "Data", "ea_uPCAresults.csv")) %>%
left_join(
read.csv(here("public", "Data", "MAONZE_opening_seqs.csv"), header=TRUE, encoding="UTF-8") %>%
select(Transcript, MatchId, Target.vowelCluster.start)
)
ea <- ea %>%
rename(target_timestamp = Target.vowelCluster.start) %>%
rename(target_transcript = Transcript)
ea <- ea %>%
mutate(
mean_rate = map2_dbl(ea$target_transcript, ea$target_timestamp, local_mean_duration, window = 10)
)
ea <- ea %>%
drop_na(mean_rate)
write.csv(ea, here("public", "Data","ea_PC_results_local_rate.csv"))- Add local speech rate for /oa/ tokens + save data frame
Click here to view code.
oa <- read.csv(here("public", "Data", "oa_uPCAresults.csv")) %>%
left_join(
read.csv(here("public", "Data", "MAONZE_opening_seqs.csv"), header=TRUE, encoding="UTF-8") %>%
select(Transcript, MatchId, Target.vowelCluster.start)
)
oa <- oa %>%
rename(target_timestamp = Target.vowelCluster.start) %>%
rename(target_transcript = Transcript)
oa <- oa %>%
mutate(
mean_rate = map2_dbl(oa$target_transcript,oa$target_timestamp, local_mean_duration, window = 10)
)
oa <- oa %>%
drop_na(mean_rate)
write.csv(oa, here("public", "Data","oa_PC_results_local_rate.csv"))- Add local speech rate for /ua/ tokens + save data frame
Click here to view code.
ua <- read.csv(here("public", "Data", "ua_uPCAresults.csv")) %>%
left_join(
read.csv(here("public", "Data", "MAONZE_opening_seqs.csv"), header=TRUE, encoding="UTF-8") %>%
select(Transcript, MatchId, Target.vowelCluster.start)
)
ua <- ua %>%
rename(target_timestamp = Target.vowelCluster.start) %>%
rename(target_transcript = Transcript)
ua <- ua %>%
mutate(
mean_rate = map2_dbl(ua$target_transcript,ua$target_timestamp, local_mean_duration, window = 10)
)
ua <- ua %>%
drop_na(mean_rate)
write.csv(ua, here("public", "Data","ua_PC_results_local_rate.csv"))9.3 /ia/ regression model
- Read in data, create phonological form trackers
Click here to view code.
ia = read.csv(here("public", "Data","ia_PC_results_local_rate.csv"), header=TRUE, encoding="UTF-8", row.names=1) %>%
# merge pause data
left_join(
read.csv(here("public", "Data", "pause_info.csv"), header=TRUE, encoding="UTF-8", row.names=1),
by = "MatchId"
) %>%
# create phonological form trackers
mutate(
phon.word = word %>%
str_replace("([AEIOU])\\1", "\\1") %>%
str_replace(fixed("wh"), "f") %>%
str_replace(fixed("ng"), "N"),
prev_c = str_extract(phon.word, ".(?=ia)"),
prev_c_tongue = case_when(
prev_c %in% c("p", "m", "f", "h") ~ "neutral",
prev_c %in% c("t", "n", "r") ~ "coronal",
prev_c %in% c("k", "N", "w") ~ "dorsal"
)
)- Set up factors as required
Click here to view code.
ia = ia %>%
mutate(
category = factor(category, levels=c("Historical", "PresentElder", "L1", "L2")),
stress = factor(stress == "yes"),
participant_gender = factor(participant_gender, levels=c("M", "F")),
complex = factor(complex == "yes"),
final = factor(final == "TRUE"),
prev_c_tongue = factor(prev_c_tongue, levels=c("neutral", "coronal", "dorsal")),
moraPositionFactor = ifelse(moraPosition > 2, "3+", moraPosition),
moraPositionFactor = factor(moraPositionFactor, levels=c("1", "2", "3+")))- Set up contrasts for factors
Click here to view code.
contrasts(ia$category) = matrix(c(c(-1,1,0,0)/2, c(-1,-1,1,1)/2, c(0,0,-1,1)/2), ncol=3)
colnames(contrasts(ia$category)) = c("|PresentElder.v.Historical", "|L1L2.v.HistoricalPresentElder", "|L2.v.L1")
contrasts(ia$stress) = contr.helmert(2)
colnames(contrasts(ia$stress)) = c("|y.v.n")
contrasts(ia$participant_gender) = contr.helmert(2)
colnames(contrasts(ia$participant_gender)) = c("|F.v.M")
contrasts(ia$complex) = contr.helmert(2)
colnames(contrasts(ia$complex)) = c("|y.v.n")
contrasts(ia$final) = contr.helmert(2)
colnames(contrasts(ia$final)) = c("|y.v.n")
contrasts(ia$prev_c_tongue) = contr.treatment(3) - 1/3
colnames(contrasts(ia$prev_c_tongue)) = c("|coronal.v.neutral", "|dorsal.v.neutral")
contrasts(ia$moraPositionFactor) <- contr.treatment(3)- Bin pause data
Click here to view code.
ia = ia %>%
mutate(
pause_bin = factor(pause_length > 0.25, levels=c(FALSE, TRUE)) ) - Set up final_pause annotations and define contrasts
Click here to view code.
ia <- ia %>%
mutate(final_pause = case_when(
final == TRUE & pause_bin == TRUE ~ TRUE,
final == TRUE & pause_bin == FALSE ~ FALSE,
final == FALSE & pause_bin == TRUE ~ FALSE,
final == FALSE & pause_bin == FALSE ~ FALSE,
))
contrasts(ia$final_pause) = contr.helmert(2)
colnames(contrasts(ia$final_pause)) = c("|y.v.n")- inverse transform
mean_rate, then remove potential leverage points <= 5 > 31
Click here to view code.
ia <- ia %>%
mutate(mean_rate_transf = 1/mean_rate) %>%
filter(mean_rate_transf > 5, mean_rate_transf < 31)The inverse transformation is due to the data skew, which is shown below. There various tokens of very slow speech that could be leverage points.
Click here to view code.
with(ia, table(category, cut(mean_rate, breaks=c(seq(from=0.03, to=0.3, by=0.02), 1))))
category (0.03,0.05] (0.05,0.07] (0.07,0.09] (0.09,0.11] (0.11,0.13]
Historical 51 187 129 21 5
PresentElder 135 548 225 42 14
L1 17 202 133 20 2
L2 21 129 119 19 9
category (0.13,0.15] (0.15,0.17] (0.17,0.19] (0.19,0.21] (0.21,0.23]
Historical 1 0 0 0 0
PresentElder 5 2 2 0 0
L1 1 1 0 0 0
L2 6 0 0 0 0
category (0.23,0.25] (0.25,0.27] (0.27,0.29] (0.29,1]
Historical 0 0 0 0
PresentElder 0 0 0 0
L1 0 0 0 0
L2 0 0 0 0
As shown here, inverse-transforming helps.
Click here to view code.
with(ia, table(category, cut(1/mean_rate, breaks=seq(from=1, to=35, by=1))))
category (1,2] (2,3] (3,4] (4,5] (5,6] (6,7] (7,8] (8,9] (9,10] (10,11]
Historical 0 0 0 0 0 1 0 5 12 9
PresentElder 0 0 0 0 2 3 8 10 17 22
L1 0 0 0 0 0 1 1 1 2 17
L2 0 0 0 0 0 2 9 4 2 16
category (11,12] (12,13] (13,14] (14,15] (15,16] (16,17] (17,18] (18,19]
Historical 32 39 43 50 50 34 30 19
PresentElder 52 67 84 98 100 110 116 68
L1 25 41 56 41 50 53 27 31
L2 27 33 47 36 35 30 20 12
category (19,20] (20,21] (21,22] (22,23] (23,24] (24,25] (25,26] (26,27]
Historical 20 20 10 8 7 3 1 1
PresentElder 83 53 26 12 21 9 8 3
L1 13 5 7 1 2 0 1 1
L2 9 6 9 2 1 3 0 0
category (27,28] (28,29] (29,30] (30,31] (31,32] (32,33] (33,34] (34,35]
Historical 0 0 0 0 0 0 0 0
PresentElder 0 0 1 0 0 0 0 0
L1 0 0 0 0 0 0 0 0
L2 0 0 0 0 0 0 0 0
- Define model
Click here to view code.
hyp.mod.ia = lmer(PC1 ~ category * (participant_gender + moraPositionFactor + complex + c.(mean_rate_transf)) + final_pause + prev_c_tongue + (1 | Speaker) + (1 | word.alt.format), data=ia, REML=F)- Check VIFs
Click here to view code.
display_vif(hyp.mod.ia) | Parameter | GVIF | df | Transformed GVIF |
|---|---|---|---|
| category | 28.580 | 3 | 3.057 |
| participant_gender | 1.158 | 1 | 1.158 |
| moraPositionFactor | 3.507 | 2 | 1.873 |
| complex | 3.263 | 1 | 3.263 |
| mean_rate_transf (centered) | 1.372 | 1 | 1.372 |
| final_pause | 1.010 | 1 | 1.010 |
| prev_c_tongue | 1.107 | 2 | 1.052 |
| category × participant_gender | 1.218 | 3 | 1.068 |
| category × moraPositionFactor | 51.929 | 6 | 1.932 |
| category × complex | 92.995 | 3 | 4.531 |
| category × mean_rate_transf (centered) | 1.456 | 3 | 1.134 |
- Table of model results
Click here to view code.
lmer_table_ia = format_lmer_table(hyp.mod.ia)
knitr::kable(lmer_table_ia, caption="Model of ia uPC1")| Estimate | SE | df | t | p | |
|---|---|---|---|---|---|
| (Intercept) | -0.911 | 0.198 | 51 | -4.603 | <0.001 |
| category|PresentElder.v.Historical | 0.478 | 0.266 | 342 | 1.799 | 0.073 |
| category|L1L2.v.HistoricalPresentElder | -0.817 | 0.240 | 448 | -3.408 | <0.001 |
| category|L2.v.L1 | 0.069 | 0.395 | 503 | 0.175 | 0.861 |
| participant_gender|F.v.M | -0.193 | 0.068 | 55 | -2.828 | 0.007 |
| moraPositionFactor2 | 0.582 | 0.301 | 75 | 1.935 | 0.057 |
| moraPositionFactor3 | 0.377 | 0.156 | 27 | 2.422 | 0.023 |
| complex|y.v.n | 0.103 | 0.117 | 109 | 0.881 | 0.380 |
| c.(mean_rate_transf) | 0.019 | 0.010 | 2002 | 1.938 | 0.053 |
| final_pause|y.v.n | -0.553 | 0.059 | 1979 | -9.394 | <0.001 |
| prev_c_tongue|coronal.v.neutral | -0.131 | 0.125 | 105 | -1.046 | 0.298 |
| prev_c_tongue|dorsal.v.neutral | 0.051 | 0.133 | 91 | 0.382 | 0.704 |
| category|PresentElder.v.Historical:participant_gender|F.v.M | -0.137 | 0.168 | 58 | -0.817 | 0.418 |
| category|L1L2.v.HistoricalPresentElder:participant_gender|F.v.M | -0.125 | 0.136 | 55 | -0.915 | 0.364 |
| category|L2.v.L1:participant_gender|F.v.M | -0.412 | 0.215 | 53 | -1.918 | 0.061 |
| category|PresentElder.v.Historical:moraPositionFactor2 | 0.742 | 0.472 | 1478 | 1.570 | 0.117 |
| category|L1L2.v.HistoricalPresentElder:moraPositionFactor2 | 0.352 | 0.466 | 1240 | 0.755 | 0.450 |
| category|L2.v.L1:moraPositionFactor2 | -0.099 | 0.768 | 1973 | -0.129 | 0.897 |
| category|PresentElder.v.Historical:moraPositionFactor3 | 0.102 | 0.156 | 1897 | 0.654 | 0.513 |
| category|L1L2.v.HistoricalPresentElder:moraPositionFactor3 | 0.309 | 0.137 | 1645 | 2.258 | 0.024 |
| category|L2.v.L1:moraPositionFactor3 | 0.237 | 0.216 | 1917 | 1.097 | 0.273 |
| category|PresentElder.v.Historical:complex|y.v.n | -0.164 | 0.198 | 1342 | -0.829 | 0.407 |
| category|L1L2.v.HistoricalPresentElder:complex|y.v.n | 0.217 | 0.192 | 1627 | 1.132 | 0.258 |
| category|L2.v.L1:complex|y.v.n | 0.036 | 0.324 | 1974 | 0.110 | 0.913 |
| category|PresentElder.v.Historical:c.(mean_rate_transf) | 0.003 | 0.023 | 1912 | 0.133 | 0.895 |
| category|L1L2.v.HistoricalPresentElder:c.(mean_rate_transf) | -0.017 | 0.019 | 2001 | -0.878 | 0.380 |
| category|L2.v.L1:c.(mean_rate_transf) | 0.019 | 0.032 | 2012 | 0.607 | 0.544 |
- Get speaker intercepts, save as .csv
Click here to view code.
speaker_intercepts_ia <- ranef(hyp.mod.ia)$Speaker
speaker_intercepts_ia_df <- data.frame(Speaker = rownames(speaker_intercepts_ia), Intercept = speaker_intercepts_ia[, 1])
speaker_intercepts_ia_df <- speaker_intercepts_ia_df %>%
mutate(sequence = "ia" )
write.csv(speaker_intercepts_ia_df, here("public", "Data", "speaker_intercepts_ia.csv"))- Investigate significant effects
- Is there evidence of an overall category effect?
Click here to view code.
hyp.mod.ia.min.cat <- update(hyp.mod.ia, ~ . - category - category:participant_gender - category:moraPositionFactor - category:complex - category:c.(mean_rate_transf))
anova(hyp.mod.ia, hyp.mod.ia.min.cat)Data: ia
Models:
hyp.mod.ia.min.cat: PC1 ~ participant_gender + moraPositionFactor + complex + c.(mean_rate_transf) + final_pause + prev_c_tongue + (1 | Speaker) + (1 | word.alt.format)
hyp.mod.ia: PC1 ~ category * (participant_gender + moraPositionFactor + complex + c.(mean_rate_transf)) + final_pause + prev_c_tongue + (1 | Speaker) + (1 | word.alt.format)
npar AIC BIC logLik deviance Chisq Df Pr(>Chisq)
hyp.mod.ia.min.cat 12 6479.7 6547.2 -3227.9 6455.7
hyp.mod.ia 30 6449.4 6618.0 -3194.7 6389.4 66.283 18 1.902e-07 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Yes, there is.
- Investigating category differences further with an EMM test
Click here to view code.
emmeans(hyp.mod.ia, pairwise ~ category)$emmeans
category emmean SE df lower.CL upper.CL
Historical -0.6726 0.182 193 -1.031 -0.315
PresentElder 0.0868 0.151 184 -0.211 0.385
L1 -0.9469 0.212 218 -1.365 -0.528
L2 -0.8318 0.224 206 -1.274 -0.389
Results are averaged over the levels of: participant_gender, moraPositionFactor, complex, final_pause, prev_c_tongue
Degrees-of-freedom method: kenward-roger
Confidence level used: 0.95
$contrasts
contrast estimate SE df t.ratio p.value
Historical - PresentElder -0.759 0.200 118 -3.800 0.0013
Historical - L1 0.274 0.256 162 1.071 0.7080
Historical - L2 0.159 0.264 155 0.604 0.9307
PresentElder - L1 1.034 0.233 152 4.439 0.0001
PresentElder - L2 0.919 0.241 145 3.810 0.0012
L1 - L2 -0.115 0.283 163 -0.407 0.9771
Results are averaged over the levels of: participant_gender, moraPositionFactor, complex, final_pause, prev_c_tongue
Degrees-of-freedom method: kenward-roger
P value adjustment: tukey method for comparing a family of 4 estimates
Signifcant differences between Present Elders + L1, as well and Present Elders + L2 c) Is there evidence of an overall gender effect?
Click here to view code.
hyp.mod.ia.min.gen <- update(hyp.mod.ia, ~ . - participant_gender - category:participant_gender)
anova(hyp.mod.ia, hyp.mod.ia.min.gen)Data: ia
Models:
hyp.mod.ia.min.gen: PC1 ~ category + moraPositionFactor + complex + c.(mean_rate_transf) + final_pause + prev_c_tongue + (1 | Speaker) + (1 | word.alt.format) + category:moraPositionFactor + category:complex + category:c.(mean_rate_transf)
hyp.mod.ia: PC1 ~ category * (participant_gender + moraPositionFactor + complex + c.(mean_rate_transf)) + final_pause + prev_c_tongue + (1 | Speaker) + (1 | word.alt.format)
npar AIC BIC logLik deviance Chisq Df Pr(>Chisq)
hyp.mod.ia.min.gen 26 6452.7 6598.8 -3200.3 6400.7
hyp.mod.ia 30 6449.4 6618.0 -3194.7 6389.4 11.255 4 0.02385 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Yes, there is.
- Investigating gender differences further with an EMM test
Click here to view code.
emmeans(hyp.mod.ia, pairwise ~ participant_gender)$emmeans
participant_gender emmean SE df lower.CL upper.CL
M -0.398 0.143 191 -0.679 -0.117
F -0.784 0.143 185 -1.065 -0.503
Results are averaged over the levels of: category, moraPositionFactor, complex, final_pause, prev_c_tongue
Degrees-of-freedom method: kenward-roger
Confidence level used: 0.95
$contrasts
contrast estimate SE df t.ratio p.value
M - F 0.386 0.148 71.4 2.610 0.0110
Results are averaged over the levels of: category, moraPositionFactor, complex, final_pause, prev_c_tongue
Degrees-of-freedom method: kenward-roger
Signficant pairwise comparision for gender.
- Is there an overall effect of mora position?|
Click here to view code.
hyp.mod.ia.min.moraPos <- update(hyp.mod.ia, ~ . - moraPositionFactor - category:moraPositionFactor)
anova(hyp.mod.ia, hyp.mod.ia.min.moraPos) #Data: ia
Models:
hyp.mod.ia.min.moraPos: PC1 ~ category + participant_gender + complex + c.(mean_rate_transf) + final_pause + prev_c_tongue + (1 | Speaker) + (1 | word.alt.format) + category:participant_gender + category:complex + category:c.(mean_rate_transf)
hyp.mod.ia: PC1 ~ category * (participant_gender + moraPositionFactor + complex + c.(mean_rate_transf)) + final_pause + prev_c_tongue + (1 | Speaker) + (1 | word.alt.format)
npar AIC BIC logLik deviance Chisq Df Pr(>Chisq)
hyp.mod.ia.min.moraPos 22 6447.8 6571.4 -3201.9 6403.8
hyp.mod.ia 30 6449.4 6618.0 -3194.7 6389.4 14.374 8 0.07253
hyp.mod.ia.min.moraPos
hyp.mod.ia .
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
No signficant effect of mora position by itself. Indicates that effect lies in interactions. f) Investigating further by conducting an EMM test on the interaction with category.
Click here to view code.
emmeans(hyp.mod.ia, pairwise ~ moraPositionFactor| category)$emmeans
category = Historical:
moraPositionFactor emmean SE df lower.CL upper.CL
1 -0.74139 0.286 236 -1.305 -0.1779
2 -0.70615 0.330 507 -1.354 -0.0579
3+ -0.57035 0.229 385 -1.021 -0.1194
category = PresentElder:
moraPositionFactor emmean SE df lower.CL upper.CL
1 -0.26327 0.239 134 -0.736 0.2099
2 0.51360 0.243 351 0.036 0.9912
3+ 0.00997 0.183 286 -0.350 0.3698
category = L1:
moraPositionFactor emmean SE df lower.CL upper.CL
1 -1.35362 0.321 420 -1.984 -0.7233
2 -0.54609 0.398 939 -1.327 0.2351
3+ -0.94108 0.289 636 -1.509 -0.3737
category = L2:
moraPositionFactor emmean SE df lower.CL upper.CL
1 -1.28450 0.350 396 -1.972 -0.5965
2 -0.57627 0.453 949 -1.465 0.3120
3+ -0.63469 0.303 546 -1.230 -0.0396
Results are averaged over the levels of: participant_gender, complex, final_pause, prev_c_tongue
Degrees-of-freedom method: kenward-roger
Confidence level used: 0.95
$contrasts
category = Historical:
contrast estimate SE df t.ratio p.value
1 - 2 -0.0352 0.464 349.4 -0.076 0.9968
1 - (3+) -0.1710 0.208 121.4 -0.822 0.6900
2 - (3+) -0.1358 0.417 468.6 -0.325 0.9433
category = PresentElder:
contrast estimate SE df t.ratio p.value
1 - 2 -0.7769 0.345 169.7 -2.250 0.0659
1 - (3+) -0.2732 0.177 62.3 -1.544 0.2778
2 - (3+) 0.5036 0.305 256.7 1.652 0.2260
category = L1:
contrast estimate SE df t.ratio p.value
1 - 2 -0.8075 0.553 895.7 -1.461 0.3102
1 - (3+) -0.4125 0.211 137.1 -1.957 0.1270
2 - (3+) 0.3950 0.528 1160.8 0.748 0.7349
category = L2:
contrast estimate SE df t.ratio p.value
1 - 2 -0.7082 0.635 786.3 -1.116 0.5047
1 - (3+) -0.6498 0.227 175.3 -2.859 0.0132
2 - (3+) 0.0584 0.591 973.0 0.099 0.9946
Results are averaged over the levels of: participant_gender, complex, final_pause, prev_c_tongue
Degrees-of-freedom method: kenward-roger
P value adjustment: tukey method for comparing a family of 3 estimates
No significant difference between mora postions within any of the categories.
9.4 /ea/ regression model
- Read in data, create phonological form trackers
Click here to view code.
ea = read.csv(here("public", "Data", "ea_PC_results_local_rate.csv"), header=TRUE, encoding="UTF-8", row.names=1) %>%
# merge pause data
left_join(
read.csv(here("public", "Data", "pause_info.csv"), header=TRUE, encoding="UTF-8", row.names=1),
by = "MatchId"
) %>%
mutate(
phon.word = word %>%
str_replace("([AEIOU])\\1", "\\1") %>%
str_replace(fixed("wh"), "f") %>%
str_replace(fixed("ng"), "N"),
prev_c = str_extract(phon.word, ".(?=ea)"),
prev_c_tongue = case_when(
prev_c %in% c("p", "m", "f", "h") ~ "neutral",
prev_c %in% c("t", "n", "r") ~ "coronal",
prev_c %in% c("k", "N", "w") ~ "dorsal"
)
)- Set up factors as required
Click here to view code.
ea = ea %>%
mutate(
category = factor(category, levels=c("Historical", "PresentElder", "L1", "L2")),
stress = factor(stress == "yes"),
participant_gender = factor(participant_gender, levels=c("M", "F")),
complex = factor(complex == "yes"),
final = factor(final == "TRUE"),
prev_c_tongue = factor(prev_c_tongue, levels=c("neutral", "coronal", "dorsal")),
moraPositionFactor = ifelse(moraPosition > 2, "3+", moraPosition),
moraPositionFactor = factor(moraPositionFactor, levels=c("1", "2", "3+")))- Set up contrasts for factors
Click here to view code.
contrasts(ea$category) = matrix(c(c(-1,1,0,0)/2, c(-1,-1,1,1)/2, c(0,0,-1,1)/2), ncol=3)
colnames(contrasts(ea$category)) = c("|PresentElder.v.Historical", "|L1L2.v.HistoricalPresentElder", "|L2.v.L1")
contrasts(ea$stress) = contr.helmert(2)
colnames(contrasts(ea$stress)) = c("|y.v.n")
contrasts(ea$participant_gender) = contr.helmert(2)
colnames(contrasts(ea$participant_gender)) = c("|F.v.M")
contrasts(ea$complex) = contr.helmert(2)
colnames(contrasts(ea$complex)) = c("|y.v.n")
contrasts(ea$final) = contr.helmert(2)
colnames(contrasts(ea$final)) = c("|y.v.n")
contrasts(ea$prev_c_tongue) = contr.treatment(3) - 1/3
colnames(contrasts(ea$prev_c_tongue)) = c("|coronal.v.neutral", "|dorsal.v.neutral")
contrasts(ea$moraPositionFactor) <- contr.treatment(3)- Bin pause data
Click here to view code.
ea = ea %>%
mutate(
pause_bin = factor(pause_length > 0.25, levels=c(FALSE, TRUE)))- Set up final_pause annotations and define contrasts
Click here to view code.
ea <- ea %>%
mutate(final_pause = case_when(
final == TRUE & pause_bin == TRUE ~ TRUE,
final == TRUE & pause_bin == FALSE ~ FALSE,
final == FALSE & pause_bin == TRUE ~ FALSE,
final == FALSE & pause_bin == FALSE ~ FALSE,
))
contrasts(ea$final_pause) = contr.helmert(2)
colnames(contrasts(ea$final_pause)) = c("|y.v.n")- Inverse transform
mean_rate, then remove potential leverage points <= 5 > 31. Reasoning for this descision is shwon for /ia/ above.
Click here to view code.
ea <- ea %>%
mutate(mean_rate_transf = 1/mean_rate) %>%
filter(mean_rate_transf > 5, mean_rate_transf < 31)- Define model
Click here to view code.
hyp.mod.ea <- lmer(PC1 ~ category * (participant_gender + complex +c.(mean_rate_transf) ) + final_pause + prev_c_tongue + (1 | Speaker) + (1 | word.alt.format), data=ea, REML=F)- Check VIFs
Click here to view code.
display_vif(hyp.mod.ea) | Parameter | GVIF | df | Transformed GVIF |
|---|---|---|---|
| category | 2.584 | 3 | 1.372 |
| participant_gender | 1.122 | 1 | 1.122 |
| complex | 1.808 | 1 | 1.808 |
| mean_rate_transf (centered) | 1.452 | 1 | 1.452 |
| final_pause | 1.007 | 1 | 1.007 |
| prev_c_tongue | 1.694 | 2 | 1.302 |
| category × participant_gender | 1.157 | 3 | 1.050 |
| category × complex | 2.926 | 3 | 1.430 |
| category × mean_rate_transf (centered) | 1.580 | 3 | 1.165 |
- Table of model results
Click here to view code.
lmer_table_ea = format_lmer_table(hyp.mod.ea)
knitr::kable(lmer_table_ea, caption="Model of ea uPC1")| Estimate | SE | df | t | p | |
|---|---|---|---|---|---|
| (Intercept) | -0.991 | 0.106 | 112 | -9.334 | <0.001 |
| category|PresentElder.v.Historical | 0.423 | 0.220 | 152 | 1.926 | 0.056 |
| category|L1L2.v.HistoricalPresentElder | -0.068 | 0.163 | 107 | -0.415 | 0.679 |
| category|L2.v.L1 | 0.433 | 0.241 | 83 | 1.796 | 0.076 |
| participant_gender|F.v.M | -0.074 | 0.070 | 59 | -1.051 | 0.298 |
| complex|y.v.n | -0.239 | 0.078 | 52 | -3.084 | 0.003 |
| c.(mean_rate_transf) | 0.034 | 0.009 | 2704 | 3.953 | <0.001 |
| final_pause|y.v.n | -0.665 | 0.046 | 2737 | -14.533 | <0.001 |
| prev_c_tongue|coronal.v.neutral | -0.155 | 0.129 | 58 | -1.201 | 0.234 |
| prev_c_tongue|dorsal.v.neutral | -0.052 | 0.198 | 65 | -0.262 | 0.794 |
| category|PresentElder.v.Historical:participant_gender|F.v.M | -0.258 | 0.181 | 72 | -1.427 | 0.158 |
| category|L1L2.v.HistoricalPresentElder:participant_gender|F.v.M | -0.099 | 0.140 | 59 | -0.707 | 0.482 |
| category|L2.v.L1:participant_gender|F.v.M | -0.142 | 0.214 | 52 | -0.663 | 0.511 |
| category|PresentElder.v.Historical:complex|y.v.n | -0.362 | 0.155 | 2721 | -2.335 | 0.020 |
| category|L1L2.v.HistoricalPresentElder:complex|y.v.n | -0.233 | 0.102 | 2752 | -2.295 | 0.022 |
| category|L2.v.L1:complex|y.v.n | -0.208 | 0.131 | 2720 | -1.593 | 0.111 |
| category|PresentElder.v.Historical:c.(mean_rate_transf) | -0.012 | 0.025 | 2555 | -0.474 | 0.636 |
| category|L1L2.v.HistoricalPresentElder:c.(mean_rate_transf) | 0.037 | 0.017 | 2700 | 2.135 | 0.033 |
| category|L2.v.L1:c.(mean_rate_transf) | 0.001 | 0.024 | 2757 | 0.023 | 0.982 |
- Get speaker intercepts, save as .csv
Click here to view code.
speaker_intercepts_ea <- ranef(hyp.mod.ea)$Speaker
speaker_intercepts_ea_df <- data.frame(Speaker = rownames(speaker_intercepts_ea), Intercept = speaker_intercepts_ea[, 1])
speaker_intercepts_ea_df <- speaker_intercepts_ea_df %>%
mutate(sequence = "ea" )
write.csv(speaker_intercepts_ea_df, here("public", "Data", "speaker_intercepts_ea.csv"))- Investigate significant effects
- Is there evidence of an overall category effect?
Click here to view code.
hyp.mod.ea.min.cat <- update(hyp.mod.ea, ~ . - category - category:participant_gender - category:stress - category:complex - category:c.(mean_rate_transf))
anova(hyp.mod.ea, hyp.mod.ea.min.cat)Data: ea
Models:
hyp.mod.ea.min.cat: PC1 ~ participant_gender + complex + c.(mean_rate_transf) + final_pause + prev_c_tongue + (1 | Speaker) + (1 | word.alt.format)
hyp.mod.ea: PC1 ~ category * (participant_gender + complex + c.(mean_rate_transf)) + final_pause + prev_c_tongue + (1 | Speaker) + (1 | word.alt.format)
npar AIC BIC logLik deviance Chisq Df Pr(>Chisq)
hyp.mod.ea.min.cat 10 8933.0 8992.3 -4456.5 8913.0
hyp.mod.ea 22 8916.5 9046.8 -4436.3 8872.5 40.525 12 5.882e-05 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Yes there is.
- Investigating category differences further with an EMM test
Click here to view code.
emmeans(hyp.mod.ea, pairwise ~ category)$emmeans
category emmean SE df lower.CL upper.CL
Historical -1.169 0.208 250 -1.58 -0.760
PresentElder -0.746 0.149 131 -1.04 -0.452
L1 -1.241 0.189 112 -1.62 -0.867
L2 -0.809 0.205 133 -1.21 -0.403
Results are averaged over the levels of: participant_gender, complex, final_pause, prev_c_tongue
Degrees-of-freedom method: kenward-roger
Confidence level used: 0.95
$contrasts
contrast estimate SE df t.ratio p.value
Historical - PresentElder -0.4230 0.230 166.2 -1.836 0.2603
Historical - L1 0.0726 0.259 137.4 0.281 0.9923
Historical - L2 -0.3604 0.271 149.9 -1.330 0.5455
PresentElder - L1 0.4956 0.213 89.6 2.324 0.1002
PresentElder - L2 0.0627 0.228 105.1 0.275 0.9927
L1 - L2 -0.4329 0.257 97.0 -1.687 0.3361
Results are averaged over the levels of: participant_gender, complex, final_pause, prev_c_tongue
Degrees-of-freedom method: kenward-roger
P value adjustment: tukey method for comparing a family of 4 estimates
No signficant differences. Indicates category effect lies in interactions
- Is there a signficant overall effect of complex?
Click here to view code.
hyp.mod.ea.min.complex <- update(hyp.mod.ea, ~ . - complex - category:complex)
anova(hyp.mod.ea, hyp.mod.ea.min.complex) Data: ea
Models:
hyp.mod.ea.min.complex: PC1 ~ category + participant_gender + c.(mean_rate_transf) + final_pause + prev_c_tongue + (1 | Speaker) + (1 | word.alt.format) + category:participant_gender + category:c.(mean_rate_transf)
hyp.mod.ea: PC1 ~ category * (participant_gender + complex + c.(mean_rate_transf)) + final_pause + prev_c_tongue + (1 | Speaker) + (1 | word.alt.format)
npar AIC BIC logLik deviance Chisq Df Pr(>Chisq)
hyp.mod.ea.min.complex 18 8923.8 9030.4 -4443.9 8887.8
hyp.mod.ea 22 8916.5 9046.8 -4436.3 8872.5 15.246 4 0.004218
hyp.mod.ea.min.complex
hyp.mod.ea **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Yes there is.
- Investigating further with an EMM test
Click here to view code.
emmeans(hyp.mod.ea, pairwise ~ complex)$emmeans
complex emmean SE df lower.CL upper.CL
FALSE -0.752 0.124 160.5 -0.996 -0.508
TRUE -1.231 0.163 66.4 -1.557 -0.904
Results are averaged over the levels of: category, participant_gender, final_pause, prev_c_tongue
Degrees-of-freedom method: kenward-roger
Confidence level used: 0.95
$contrasts
contrast estimate SE df t.ratio p.value
FALSE - TRUE 0.479 0.174 53.6 2.758 0.0079
Results are averaged over the levels of: category, participant_gender, final_pause, prev_c_tongue
Degrees-of-freedom method: kenward-roger
Significant pairwise comparison
9.5 /oa/ regression model
- Read in data, create phonological form trackers
Click here to view code.
oa = read.csv(here("public", "Data", "oa_PC_results_local_rate.csv"), header=TRUE, encoding="UTF-8", row.names=1) %>%
# merge pause data
left_join(
read.csv(here("public", "Data", "pause_info.csv"), header=TRUE, encoding="UTF-8", row.names=1),
by = "MatchId"
) %>%
mutate(
phon.word = word %>%
str_replace("([AEIOU])\\1", "\\1") %>%
str_replace(fixed("wh"), "f") %>%
str_replace(fixed("ng"), "N"),
prev_c = str_extract(phon.word, ".(?=oa)"),
prev_c_tongue = case_when(
prev_c %in% c("p", "m", "f", "h") ~ "neutral",
prev_c %in% c("t", "n", "r") ~ "coronal",
prev_c %in% c("k", "N", "w") ~ "dorsal"
)
)- Set up factors as required
Click here to view code.
oa = oa %>%
mutate(
category = factor(category, levels=c("Historical", "PresentElder", "L1", "L2")),
stress = factor(stress == "yes"),
participant_gender = factor(participant_gender, levels=c("M", "F")),
complex = factor(complex == "yes"),
final = factor(final == "TRUE"),
prev_c_tongue = factor(prev_c_tongue, levels=c("neutral", "coronal", "dorsal")),
moraPositionFactor = ifelse(moraPosition > 2, "3+", moraPosition),
moraPositionFactor = factor(moraPositionFactor, levels=c("1", "2", "3+")))- Set up contrasts for factors
Click here to view code.
contrasts(oa$category) = matrix(c(c(-1,1,0,0)/2, c(-1,-1,1,1)/2, c(0,0,-1,1)/2), ncol=3)
colnames(contrasts(oa$category)) = c("|PresentElder.v.Historical", "|L1L2.v.HistoricalPresentElder", "|L2.v.L1")
contrasts(oa$stress) = contr.helmert(2)
colnames(contrasts(oa$stress)) = c("|y.v.n")
contrasts(oa$participant_gender) = contr.helmert(2)
colnames(contrasts(oa$participant_gender)) = c("|F.v.M")
contrasts(oa$complex) = contr.helmert(2)
colnames(contrasts(oa$complex)) = c("|y.v.n")
contrasts(oa$final) = contr.helmert(2)
colnames(contrasts(oa$final)) = c("|y.v.n")
contrasts(oa$prev_c_tongue) = contr.treatment(3) - 1/3
colnames(contrasts(oa$prev_c_tongue)) = c("|coronal.v.neutral", "|dorsal.v.neutral")
contrasts(oa$moraPositionFactor) <- contr.treatment(3)- Bin pause data
Click here to view code.
oa = oa %>%
mutate(
pause_bin = factor(pause_length > 0.25, levels=c(FALSE, TRUE)) ) - Set up final_pause annotations and define contrasts
Click here to view code.
oa <- oa %>%
mutate(final_pause = case_when(
final == TRUE & pause_bin == TRUE ~ TRUE,
final == TRUE & pause_bin == FALSE ~ FALSE,
final == FALSE & pause_bin == TRUE ~ FALSE,
final == FALSE & pause_bin == FALSE ~ FALSE,
))
contrasts(oa$final_pause) = contr.helmert(2)
colnames(contrasts(oa$final_pause)) = c("|y.v.n")- Inverse transform
mean_rate, then remove potential leverage points <= 5 > 31. See /ia/ section for reasoning.
Click here to view code.
oa <- oa %>%
mutate(mean_rate_transf = 1/mean_rate) %>%
filter(mean_rate_transf > 5, mean_rate_transf < 31)- Define model
Click here to view code.
hyp.mod.oa = lmer(PC1 ~ category * (participant_gender + moraPositionFactor + complex + c.(mean_rate_transf)) + final_pause + prev_c_tongue + (1 | Speaker) + (1 | word.alt.format), data=oa, REML=F)- Check VIFs
Click here to view code.
display_vif(hyp.mod.oa) | Parameter | GVIF | df | Transformed GVIF |
|---|---|---|---|
| category | 55.417 | 3 | 3.813 |
| participant_gender | 1.148 | 1 | 1.148 |
| moraPositionFactor | 2.003 | 2 | 1.415 |
| complex | 1.624 | 1 | 1.624 |
| mean_rate_transf (centered) | 1.346 | 1 | 1.346 |
| final_pause | 1.030 | 1 | 1.030 |
| prev_c_tongue | 1.420 | 2 | 1.192 |
| category × participant_gender | 1.255 | 3 | 1.079 |
| category × moraPositionFactor | 4.352 | 6 | 1.278 |
| category × complex | 31.169 | 3 | 3.147 |
| category × mean_rate_transf (centered) | 1.519 | 3 | 1.150 |
- Table of model results
Click here to view code.
lmer_table_oa = format_lmer_table(hyp.mod.oa)
knitr::kable(lmer_table_oa, caption="Model of oa uPC1")| Estimate | SE | df | t | p | |
|---|---|---|---|---|---|
| (Intercept) | -0.626 | 0.195 | 48 | -3.210 | 0.002 |
| category|PresentElder.v.Historical | -0.035 | 0.269 | 535 | -0.130 | 0.897 |
| category|L1L2.v.HistoricalPresentElder | -0.276 | 0.234 | 556 | -1.179 | 0.239 |
| category|L2.v.L1 | 0.258 | 0.363 | 626 | 0.710 | 0.478 |
| participant_gender|F.v.M | -0.097 | 0.059 | 59 | -1.639 | 0.107 |
| moraPositionFactor2 | 0.303 | 0.241 | 17 | 1.257 | 0.225 |
| moraPositionFactor3 | 0.175 | 0.200 | 34 | 0.875 | 0.388 |
| complex|y.v.n | -0.173 | 0.126 | 44 | -1.375 | 0.176 |
| c.(mean_rate_transf) | 0.036 | 0.011 | 1618 | 3.218 | 0.001 |
| final_pause|y.v.n | -0.232 | 0.058 | 1671 | -3.994 | <0.001 |
| prev_c_tongue|coronal.v.neutral | 0.577 | 0.174 | 21 | 3.316 | 0.003 |
| prev_c_tongue|dorsal.v.neutral | 0.226 | 0.233 | 25 | 0.970 | 0.341 |
| category|PresentElder.v.Historical:participant_gender|F.v.M | -0.261 | 0.153 | 70 | -1.699 | 0.094 |
| category|L1L2.v.HistoricalPresentElder:participant_gender|F.v.M | -0.447 | 0.118 | 60 | -3.779 | <0.001 |
| category|L2.v.L1:participant_gender|F.v.M | -0.060 | 0.180 | 52 | -0.336 | 0.738 |
| category|PresentElder.v.Historical:moraPositionFactor2 | 0.417 | 0.197 | 1689 | 2.121 | 0.034 |
| category|L1L2.v.HistoricalPresentElder:moraPositionFactor2 | 0.280 | 0.158 | 1684 | 1.772 | 0.077 |
| category|L2.v.L1:moraPositionFactor2 | -0.205 | 0.242 | 1660 | -0.846 | 0.398 |
| category|PresentElder.v.Historical:moraPositionFactor3 | 0.356 | 0.273 | 1628 | 1.301 | 0.193 |
| category|L1L2.v.HistoricalPresentElder:moraPositionFactor3 | 0.685 | 0.192 | 1576 | 3.561 | <0.001 |
| category|L2.v.L1:moraPositionFactor3 | 0.271 | 0.259 | 1687 | 1.044 | 0.297 |
| category|PresentElder.v.Historical:complex|y.v.n | -0.185 | 0.206 | 1603 | -0.896 | 0.370 |
| category|L1L2.v.HistoricalPresentElder:complex|y.v.n | -0.044 | 0.187 | 857 | -0.235 | 0.814 |
| category|L2.v.L1:complex|y.v.n | -0.177 | 0.292 | 1616 | -0.606 | 0.545 |
| category|PresentElder.v.Historical:c.(mean_rate_transf) | -0.013 | 0.027 | 1520 | -0.479 | 0.632 |
| category|L1L2.v.HistoricalPresentElder:c.(mean_rate_transf) | -0.007 | 0.022 | 1611 | -0.298 | 0.766 |
| category|L2.v.L1:c.(mean_rate_transf) | -0.029 | 0.035 | 1643 | -0.835 | 0.404 |
- Get speaker intercepts, save as .csv
Click here to view code.
speaker_intercepts_oa <- ranef(hyp.mod.oa)$Speaker
speaker_intercepts_oa_df <- data.frame(Speaker = rownames(speaker_intercepts_oa), Intercept = speaker_intercepts_oa[, 1])
speaker_intercepts_oa_df <- speaker_intercepts_oa_df %>%
mutate(sequence = "oa" )
write.csv(speaker_intercepts_oa_df, here("public", "Data", "speaker_intercepts_oa.csv"))- Investigate significant effects
- Is there evidence of an overall category effect?
Click here to view code.
hyp.mod.oa.min.cat <- update(hyp.mod.oa, ~ . - category - category:participant_gender - category:moraPositionFactor - category:complex - category:c.(mean_rate_transf))
anova(hyp.mod.oa, hyp.mod.oa.min.cat) Data: oa
Models:
hyp.mod.oa.min.cat: PC1 ~ participant_gender + moraPositionFactor + complex + c.(mean_rate_transf) + final_pause + prev_c_tongue + (1 | Speaker) + (1 | word.alt.format)
hyp.mod.oa: PC1 ~ category * (participant_gender + moraPositionFactor + complex + c.(mean_rate_transf)) + final_pause + prev_c_tongue + (1 | Speaker) + (1 | word.alt.format)
npar AIC BIC logLik deviance Chisq Df Pr(>Chisq)
hyp.mod.oa.min.cat 12 5607.3 5672.5 -2791.7 5583.3
hyp.mod.oa 30 5600.6 5763.7 -2770.3 5540.6 42.711 18 0.0008789 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Yep, there is.
- Investigating category differences with an EMM test
Click here to view code.
emmeans(hyp.mod.oa, pairwise ~ category)$emmeans
category emmean SE df lower.CL upper.CL
Historical -0.601 0.226 349 -1.046 -0.1560
PresentElder -0.378 0.176 235 -0.726 -0.0306
L1 -0.583 0.255 454 -1.084 -0.0821
L2 -0.303 0.274 509 -0.842 0.2347
Results are averaged over the levels of: participant_gender, moraPositionFactor, complex, final_pause, prev_c_tongue
Degrees-of-freedom method: kenward-roger
Confidence level used: 0.95
$contrasts
contrast estimate SE df t.ratio p.value
Historical - PresentElder -0.2227 0.245 401 -0.909 0.8000
Historical - L1 -0.0179 0.315 500 -0.057 0.9999
Historical - L2 -0.2975 0.325 525 -0.915 0.7970
PresentElder - L1 0.2048 0.279 458 0.733 0.8836
PresentElder - L2 -0.0748 0.293 495 -0.255 0.9942
L1 - L2 -0.2796 0.339 557 -0.825 0.8429
Results are averaged over the levels of: participant_gender, moraPositionFactor, complex, final_pause, prev_c_tongue
Degrees-of-freedom method: kenward-roger
P value adjustment: tukey method for comparing a family of 4 estimates
No significant differences, suggests category effect lies in the interactions
- Investigating further by conducting an EMM test on the interaction of category and gender
Click here to view code.
emmeans(hyp.mod.oa, pairwise ~ participant_gender |category) $emmeans
category = Historical:
participant_gender emmean SE df lower.CL upper.CL
M -0.8581 0.251 296 -1.351 -0.36476
F -0.3437 0.275 257 -0.885 0.19784
category = PresentElder:
participant_gender emmean SE df lower.CL upper.CL
M -0.3747 0.205 195 -0.779 0.02996
F -0.3817 0.196 212 -0.769 0.00557
category = L1:
participant_gender emmean SE df lower.CL upper.CL
M -0.2926 0.289 267 -0.862 0.27678
F -0.8734 0.285 328 -1.435 -0.31235
category = L2:
participant_gender emmean SE df lower.CL upper.CL
M 0.0473 0.307 298 -0.557 0.65189
F -0.6542 0.311 335 -1.266 -0.04263
Results are averaged over the levels of: moraPositionFactor, complex, final_pause, prev_c_tongue
Degrees-of-freedom method: kenward-roger
Confidence level used: 0.95
$contrasts
category = Historical:
contrast estimate SE df t.ratio p.value
M - F -0.51438 0.269 97.6 -1.914 0.0586
category = PresentElder:
contrast estimate SE df t.ratio p.value
M - F 0.00696 0.192 64.2 0.036 0.9712
category = L1:
contrast estimate SE df t.ratio p.value
M - F 0.58081 0.265 61.7 2.194 0.0320
category = L2:
contrast estimate SE df t.ratio p.value
M - F 0.70149 0.286 67.1 2.451 0.0169
Results are averaged over the levels of: moraPositionFactor, complex, final_pause, prev_c_tongue
Degrees-of-freedom method: kenward-roger
Significant differences in the L1 + L2 categories.
- Is there an overall effect of mora position?
Click here to view code.
hyp.mod.oa.min.moraPos <- update(hyp.mod.oa, ~ . - moraPositionFactor - category:moraPositionFactor)
anova(hyp.mod.oa, hyp.mod.oa.min.moraPos)Data: oa
Models:
hyp.mod.oa.min.moraPos: PC1 ~ category + participant_gender + complex + c.(mean_rate_transf) + final_pause + prev_c_tongue + (1 | Speaker) + (1 | word.alt.format) + category:participant_gender + category:complex + category:c.(mean_rate_transf)
hyp.mod.oa: PC1 ~ category * (participant_gender + moraPositionFactor + complex + c.(mean_rate_transf)) + final_pause + prev_c_tongue + (1 | Speaker) + (1 | word.alt.format)
npar AIC BIC logLik deviance Chisq Df Pr(>Chisq)
hyp.mod.oa.min.moraPos 22 5605.6 5725.2 -2780.8 5561.6
hyp.mod.oa 30 5600.6 5763.7 -2770.3 5540.6 21.038 8 0.007047
hyp.mod.oa.min.moraPos
hyp.mod.oa **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
yes.
- Investigate interaction with category further by conducting an EMM test
Click here to view code.
emmeans(hyp.mod.oa, pairwise ~ moraPositionFactor| category) $emmeans
category = Historical:
moraPositionFactor emmean SE df lower.CL upper.CL
1 -0.4704 0.299 260 -1.058 0.1176
2 -0.5164 0.282 218 -1.073 0.0398
3+ -0.8159 0.305 319 -1.416 -0.2156
category = PresentElder:
moraPositionFactor emmean SE df lower.CL upper.CL
1 -0.5053 0.238 122 -0.977 -0.0338
2 -0.1342 0.230 111 -0.589 0.3206
3+ -0.4951 0.242 154 -0.973 -0.0175
category = L1:
moraPositionFactor emmean SE df lower.CL upper.CL
1 -0.8922 0.311 309 -1.504 -0.2800
2 -0.3470 0.286 229 -0.911 0.2174
3+ -0.5099 0.333 349 -1.164 0.1442
category = L2:
moraPositionFactor emmean SE df lower.CL upper.CL
1 -0.6345 0.345 386 -1.313 0.0435
2 -0.2942 0.301 280 -0.887 0.2990
3+ 0.0184 0.344 407 -0.657 0.6936
Results are averaged over the levels of: participant_gender, complex, final_pause, prev_c_tongue
Degrees-of-freedom method: kenward-roger
Confidence level used: 0.95
$contrasts
category = Historical:
contrast estimate SE df t.ratio p.value
1 - 2 0.0460 0.326 81.2 0.141 0.9891
1 - (3+) 0.3455 0.317 270.4 1.091 0.5206
2 - (3+) 0.2995 0.344 150.7 0.871 0.6597
category = PresentElder:
contrast estimate SE df t.ratio p.value
1 - 2 -0.3711 0.291 47.4 -1.274 0.4166
1 - (3+) -0.0102 0.236 73.7 -0.043 0.9990
2 - (3+) 0.3608 0.288 60.7 1.253 0.4271
category = L1:
contrast estimate SE df t.ratio p.value
1 - 2 -0.5453 0.320 76.2 -1.705 0.2098
1 - (3+) -0.3823 0.278 141.6 -1.378 0.3554
2 - (3+) 0.1629 0.323 96.9 0.504 0.8694
category = L2:
contrast estimate SE df t.ratio p.value
1 - 2 -0.3404 0.336 93.6 -1.013 0.5707
1 - (3+) -0.6529 0.294 177.4 -2.218 0.0709
2 - (3+) -0.3126 0.329 105.9 -0.950 0.6101
Results are averaged over the levels of: participant_gender, complex, final_pause, prev_c_tongue
Degrees-of-freedom method: kenward-roger
P value adjustment: tukey method for comparing a family of 3 estimates
No significant differences between mora positions within any category.
9.6 /ua/ regression model
- Read in data, create phonological form trackers
Click here to view code.
ua = read.csv(here("public", "Data", "ua_PC_results_local_rate.csv"), header=TRUE, encoding="UTF-8", row.names=1) %>%
# merge pause data
left_join(
read.csv(here("public", "Data", "pause_info.csv"), header=TRUE, encoding="UTF-8", row.names=1),
by = "MatchId"
) %>%
mutate(
phon.word = word %>%
str_replace("([AEIOU])\\1", "\\1") %>%
str_replace(fixed("wh"), "f") %>%
str_replace(fixed("ng"), "N"),
prev_c = str_extract(phon.word, ".(?=ua)"),
prev_c_tongue = case_when(
prev_c %in% c("p", "m", "f", "h") ~ "neutral",
prev_c %in% c("t", "n", "r") ~ "coronal",
prev_c %in% c("k", "N", "w") ~ "dorsal"
)
)- Set up factors as required
Click here to view code.
ua = ua %>%
mutate(
category = factor(category, levels=c("Historical", "PresentElder", "L1", "L2")),
stress = factor(stress == "yes"),
participant_gender = factor(participant_gender, levels=c("M", "F")),
complex = factor(complex == "yes"),
final = factor(final == "TRUE"),
prev_c_tongue = factor(prev_c_tongue, levels=c("neutral", "coronal", "dorsal")),
moraPositionFactor = ifelse(moraPosition > 2, "3+", moraPosition),
moraPositionFactor = factor(moraPositionFactor, levels=c("1", "2", "3+")))- Set up contrasts for factors
Click here to view code.
contrasts(ua$category) = matrix(c(c(-1,1,0,0)/2, c(-1,-1,1,1)/2, c(0,0,-1,1)/2), ncol=3)
colnames(contrasts(ua$category)) = c("|PresentElder.v.Historical", "|L1L2.v.HistoricalPresentElder", "|L2.v.L1")
contrasts(ua$stress) = contr.helmert(2)
colnames(contrasts(ua$stress)) = c("|y.v.n")
contrasts(ua$participant_gender) = contr.helmert(2)
colnames(contrasts(ua$participant_gender)) = c("|F.v.M")
contrasts(ua$complex) = contr.helmert(2)
colnames(contrasts(ua$complex)) = c("|y.v.n")
contrasts(ua$final) = contr.helmert(2)
colnames(contrasts(ua$final)) = c("|y.v.n")
contrasts(ua$prev_c_tongue) = contr.treatment(3) - 1/3
colnames(contrasts(ua$prev_c_tongue)) = c("|coronal.v.neutral", "|dorsal.v.neutral")
contrasts(ea$moraPositionFactor) <- contr.treatment(3)- Bin pause data
Click here to view code.
ua = ua %>%
mutate(
pause_bin = factor(pause_length > 0.25, levels=c(FALSE, TRUE)) ) - Set up final_pause annotations and define contrasts
Click here to view code.
ua <- ua %>%
mutate(final_pause = case_when(
final == TRUE & pause_bin == TRUE ~ TRUE,
final == TRUE & pause_bin == FALSE ~ FALSE,
final == FALSE & pause_bin == TRUE ~ FALSE,
final == FALSE & pause_bin == FALSE ~ FALSE,
))
contrasts(ua$final_pause) = contr.helmert(2)
colnames(contrasts(ua$final_pause)) = c("|y.v.n")- Inverse transform
mean_rate, then remove potential leverage points <= 5 > 31, see /ia/ section for reasoning.
Click here to view code.
ua <- ua %>%
mutate(mean_rate_transf = 1/mean_rate) %>%
filter(mean_rate_transf > 5, mean_rate_transf < 31)- Flip the polarity of the PC1 scores so that they match the others
Click here to view code.
ua$PC1 = -1*(ua$PC1)- Define model
Click here to view code.
hyp.mod.ua = lmer(PC1 ~ category * (participant_gender+ complex + c.(mean_rate_transf)) + final_pause + prev_c_tongue + (1 | Speaker) + (1 | word.alt.format), data=ua, REML=F)- Check VIFs
Click here to view code.
display_vif(hyp.mod.ua) | Parameter | GVIF | df | Transformed GVIF |
|---|---|---|---|
| category | 30.056 | 3 | 3.109 |
| participant_gender | 1.122 | 1 | 1.122 |
| complex | 1.230 | 1 | 1.230 |
| mean_rate_transf (centered) | 1.210 | 1 | 1.210 |
| final_pause | 1.006 | 1 | 1.006 |
| prev_c_tongue | 1.025 | 2 | 1.012 |
| category × participant_gender | 1.163 | 3 | 1.052 |
| category × complex | 31.480 | 3 | 3.158 |
| category × mean_rate_transf (centered) | 1.251 | 3 | 1.078 |
- Table of model results
Click here to view code.
lmer_table_ua = format_lmer_table(hyp.mod.ua)
knitr::kable(lmer_table_ua, caption="Model of ua uPC1")| Estimate | SE | df | t | p | |
|---|---|---|---|---|---|
| (Intercept) | -0.758 | 0.113 | 122 | -6.708 | <0.001 |
| category|PresentElder.v.Historical | 0.483 | 0.166 | 298 | 2.904 | 0.004 |
| category|L1L2.v.HistoricalPresentElder | 0.133 | 0.162 | 489 | 0.818 | 0.414 |
| category|L2.v.L1 | 0.292 | 0.265 | 608 | 1.103 | 0.271 |
| participant_gender|F.v.M | -0.183 | 0.044 | 52 | -4.168 | <0.001 |
| complex|y.v.n | -0.189 | 0.085 | 145 | -2.218 | 0.028 |
| c.(mean_rate_transf) | 0.052 | 0.007 | 3414 | 7.554 | <0.001 |
| final_pause|y.v.n | -0.413 | 0.044 | 3924 | -9.279 | <0.001 |
| prev_c_tongue|coronal.v.neutral | 0.338 | 0.110 | 46 | 3.083 | 0.003 |
| prev_c_tongue|dorsal.v.neutral | 0.344 | 0.232 | 34 | 1.482 | 0.147 |
| category|PresentElder.v.Historical:participant_gender|F.v.M | -0.182 | 0.111 | 62 | -1.640 | 0.106 |
| category|L1L2.v.HistoricalPresentElder:participant_gender|F.v.M | -0.203 | 0.088 | 53 | -2.315 | 0.025 |
| category|L2.v.L1:participant_gender|F.v.M | -0.194 | 0.136 | 47 | -1.425 | 0.161 |
| category|PresentElder.v.Historical:complex|y.v.n | 0.078 | 0.139 | 3216 | 0.565 | 0.572 |
| category|L1L2.v.HistoricalPresentElder:complex|y.v.n | 0.228 | 0.143 | 1347 | 1.589 | 0.112 |
| category|L2.v.L1:complex|y.v.n | 0.253 | 0.235 | 3096 | 1.078 | 0.281 |
| category|PresentElder.v.Historical:c.(mean_rate_transf) | -0.025 | 0.017 | 3312 | -1.440 | 0.150 |
| category|L1L2.v.HistoricalPresentElder:c.(mean_rate_transf) | 0.002 | 0.014 | 3404 | 0.135 | 0.893 |
| category|L2.v.L1:c.(mean_rate_transf) | -0.033 | 0.021 | 3476 | -1.567 | 0.117 |
- Get speaker intercepts, save as .csv
Click here to view code.
speaker_intercepts_ua <- ranef(hyp.mod.ua)$Speaker
speaker_intercepts_ua_df <- data.frame(Speaker = rownames(speaker_intercepts_ua), Intercept = speaker_intercepts_ua[, 1])
speaker_intercepts_ua_df <- speaker_intercepts_ua_df %>%
mutate(sequence = "ua" )
write.csv(speaker_intercepts_ua_df, here("public", "Data", "speaker_intercepts_ua.csv"))- Investigate significant effects
- Is there evidence of an overall category effect?
Click here to view code.
hyp.mod.ua.min.cat <- update(hyp.mod.ua, ~ . - category - category:participant_gender - - category:complex - category:c.(mean_rate_transf))
anova(hyp.mod.ua, hyp.mod.ua.min.cat)Data: ua
Models:
hyp.mod.ua.min.cat: PC1 ~ participant_gender + complex + c.(mean_rate_transf) + final_pause + prev_c_tongue + (1 | Speaker) + (1 | word.alt.format) + category:complex
hyp.mod.ua: PC1 ~ category * (participant_gender + complex + c.(mean_rate_transf)) + final_pause + prev_c_tongue + (1 | Speaker) + (1 | word.alt.format)
npar AIC BIC logLik deviance Chisq Df Pr(>Chisq)
hyp.mod.ua.min.cat 16 12660 12760 -6313.9 12628
hyp.mod.ua 22 12659 12797 -6307.3 12615 13.225 6 0.03959 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Yes there is. b) Investigating category differences with an EMM test
Click here to view code.
emmeans(hyp.mod.ua, pairwise ~ category)$emmeans
category emmean SE df asymp.LCL asymp.UCL
Historical -1.066 0.161 Inf -1.382 -0.751
PresentElder -0.583 0.132 Inf -0.842 -0.325
L1 -0.838 0.188 Inf -1.205 -0.470
L2 -0.546 0.219 Inf -0.974 -0.118
Results are averaged over the levels of: participant_gender, complex, final_pause, prev_c_tongue
Degrees-of-freedom method: asymptotic
Confidence level used: 0.95
$contrasts
contrast estimate SE df z.ratio p.value
Historical - PresentElder -0.4832 0.166 Inf -2.904 0.0193
Historical - L1 -0.2286 0.221 Inf -1.034 0.7296
Historical - L2 -0.5204 0.249 Inf -2.089 0.1568
PresentElder - L1 0.2546 0.200 Inf 1.275 0.5787
PresentElder - L2 -0.0372 0.229 Inf -0.162 0.9985
L1 - L2 -0.2918 0.265 Inf -1.103 0.6880
Results are averaged over the levels of: participant_gender, complex, final_pause, prev_c_tongue
Degrees-of-freedom method: asymptotic
P value adjustment: tukey method for comparing a family of 4 estimates
Only significant differences between historical and present elders (already captured by model terms)
- Investigating further by conducting an EMM test on the interaction of category and gender
Click here to view code.
emmeans(hyp.mod.ua, pairwise ~ participant_gender |category) $emmeans
category = Historical:
participant_gender emmean SE df asymp.LCL asymp.UCL
M -1.076 0.175 Inf -1.419 -0.733
F -1.057 0.193 Inf -1.434 -0.679
category = PresentElder:
participant_gender emmean SE df asymp.LCL asymp.UCL
M -0.411 0.152 Inf -0.708 -0.114
F -0.755 0.144 Inf -1.038 -0.473
category = L1:
participant_gender emmean SE df asymp.LCL asymp.UCL
M -0.650 0.211 Inf -1.064 -0.237
F -1.025 0.207 Inf -1.432 -0.619
category = L2:
participant_gender emmean SE df asymp.LCL asymp.UCL
M -0.165 0.242 Inf -0.640 0.311
F -0.927 0.238 Inf -1.394 -0.461
Results are averaged over the levels of: complex, final_pause, prev_c_tongue
Degrees-of-freedom method: asymptotic
Confidence level used: 0.95
$contrasts
category = Historical:
contrast estimate SE df z.ratio p.value
M - F -0.0194 0.177 Inf -0.109 0.9129
category = PresentElder:
contrast estimate SE df z.ratio p.value
M - F 0.3441 0.133 Inf 2.582 0.0098
category = L1:
contrast estimate SE df z.ratio p.value
M - F 0.3752 0.186 Inf 2.023 0.0431
category = L2:
contrast estimate SE df z.ratio p.value
M - F 0.7627 0.199 Inf 3.833 0.0001
Results are averaged over the levels of: complex, final_pause, prev_c_tongue
Degrees-of-freedom method: asymptotic
Significant gender difference in younger speakers only. ## Marginal effects plots
Click here to view code.
oa$category <- factor(oa$category,
levels = c("Historical", "PresentElder", "L1", "L2"),
labels = c("Historical elders", "Present elders", "Young L1", "Young L2"))
ua$category <- factor(ua$category,
levels = c("Historical", "PresentElder", "L1", "L2"),
labels = c("Historical elders", "Present elders", "Young L1", "Young L2"))
hyp.mod.oa_renamed = lmer(PC1 ~ category * (participant_gender + moraPositionFactor + complex + c.(mean_rate_transf)) + final_pause + prev_c_tongue + (1 | Speaker) + (1 | word.alt.format), data=oa, REML=F)
hyp.mod.ua_renamed = lmer(PC1 ~ category * (participant_gender+ complex + moraPositionFactor + c.(mean_rate_transf)) + final_pause + prev_c_tongue + (1 | Speaker) + (1 | word.alt.format), data=ua, REML=F)9.6.1 Category and gender effects (Manuscript §4.2.1)
9.6.1.1 /oa/ and /ua/ category * gender (Manuscript Figure 7)
Rename factor levels so that the labels are more informative
Define plots
Click here to view code.
PC1_CatGenderoa <- plot_model(hyp.mod.oa_renamed, type = "pred", terms = c("category", "participant_gender"),
title = "/oa/", axis.title = c(NULL, "uPC1 score: hiatus-like ↔ diphthong-like"), show.legend = F)+
labs(
x = "Speaker Category",
) +
scale_color_manual(
values = c("M" = "#1F78B4", "F" = "#E31A1C"),
labels = c("M" = "Men", "F" = "Women")
) +
theme_minimal()
PC1_CatGenderua <- plot_model(hyp.mod.ua_renamed, type = "pred", terms = c("category", "participant_gender"),
title = "/ua/", axis.title = c(NULL, "uPC1 score: hiatus-like ↔ diphthong-like"))+
labs(
x = "Speaker Category",
color = "Speaker Gender"
)+
scale_color_manual(
values = c("M" = "#1F78B4", "F" = "#E31A1C"), # Optional: specify colors
labels = c("M" = "Men", "F" = "Women") # Update labels for legend
) +
theme_minimal() + theme(legend.position="bottom")- Combine plots and save
Click here to view code.
CatGendercombined <- cowplot::plot_grid(PC1_CatGenderoa, PC1_CatGenderua,
labels = c("a", "b"), ncol = 1, align = "c", axis = "l")
CatGendercombined Click here to view code.
ggsave(here("public", "Figures", "RegressionAnalysis", "CatGendercombined.png"), CatGendercombined, width = 5, height = 9, bg = 'white')9.6.1.2 /ia/ category and gender (Manuscript Figure 8 and 9)
- Rename factor levels so that the labels are more informative
Click here to view code.
ia$category <- factor(ia$category,
levels = c("Historical", "PresentElder", "L1", "L2"),
labels = c("Historical elders", "Present elders", "Young L1", "Young L2"))
ia$participant_gender <- factor(ia$participant_gender,
levels = c("M", "F"),
labels = c("Men", "Women"))
hyp.mod.ia_renamed = lmer(PC1 ~ category * (participant_gender + moraPositionFactor + complex + c.(mean_rate_transf)) + final_pause + prev_c_tongue + (1 | Speaker) + (1 | word.alt.format), data=ia, REML=F)- Define plots
Click here to view code.
PC1_Genderia <- plot_model(hyp.mod.ia_renamed, type = "pred", terms = c( "participant_gender"),
title = " ", axis.title = c("Speaker Gender", "uPC1 score: hiatus-like ↔ diphthong-like")) +
theme_minimal()
PC1_Categoryia <- plot_model(hyp.mod.ia_renamed, type = "pred", terms = c( "category"),
title = " ", axis.title = c("Speaker Category" , "uPC1 score: hiatus-like ↔ diphthong-like")) +
theme_minimal()- Save
Click here to view code.
ggsave(here("public", "Figures", "RegressionAnalysis", "iaPC1Cat.png"), PC1_Categoryia, height = 10, width = 15, units = "cm", bg = 'white')
ggsave(here("public", "Figures", "RegressionAnalysis", "iaPC1Gender.png"), PC1_Genderia, height = 10, width = 15, units = "cm", bg = 'white')9.6.1.3 /ia/ and /oa/ category* mora position (Manuscript Figure 10)
- Define plots
Click here to view code.
PC1_CatMoraPosia <- plot_model(hyp.mod.ia_renamed, type = "pred", terms = c("category", "moraPositionFactor"),
title = "/ia/", axis.title = c( "uPC1 score: hiatus-like ↔ diphthong-like"), show.legend = F)+
labs(
x = "Speaker Category",
color = "Mora position"
)+
scale_color_manual(values = c("1" = "#33A02C", "2" = "#FF7F00", "3+" = "#6A3D9A")) +
theme_minimal()
PC1_CatMoraPosoa <- plot_model(hyp.mod.oa_renamed, type = "pred", terms = c("category", "moraPositionFactor"),
title = "/oa/", axis.title = c("category", "uPC1 score: hiatus-like ↔ diphthong-like"))+
labs(
x = "Speaker Category",
color = "Mora position"
)+
scale_color_manual(values = c("1" = "#33A02C", "2" = "#FF7F00", "3+" = "#6A3D9A")) +
theme_minimal() + theme(legend.position="bottom")- Combine
Click here to view code.
plots_combined_mora <- cowplot::plot_grid(PC1_CatMoraPosia, PC1_CatMoraPosoa,
labels = c("a", "b"), ncol = 1, align = "c", axis = "l")
plots_combined_mora- Save
Click here to view code.
ggsave(here("public", "Figures", "RegressionAnalysis", "CatMoracombined.png"), plots_combined_mora, width = 5, height = 9, bg = 'white')9.6.1.4 /ea/ category* morpheme boundary (Manuscript Figure 11 )
- Rename factor levels so that the labels are more informative
Click here to view code.
ea$category <- factor(ea$category,
levels = c("Historical", "PresentElder", "L1", "L2"),
labels = c("Historical elders", "Present elders", "Young L1", "Young L2"))
hyp.mod.ea_renamed <- lmer(PC1 ~ category * (participant_gender + complex +c.(mean_rate_transf) ) + final_pause + prev_c_tongue + (1 | Speaker) + (1 | word.alt.format), data=ea, REML=F) Click here to view code.
PC1_CatComplexea <- plot_model(hyp.mod.ea_renamed, type = "pred", terms = c("category", "complex"),
title = " ", axis.title = c("Speaker Category", "uPC1 score: hiatus-like ↔ diphthong-like"),
legend.title="morpheme boundary") +
scale_color_manual(values = c("TRUE" = "#018F77", "FALSE" = "#f37735")) +
theme_minimal() +
theme(legend.position = "bottom")
PC1_CatComplexeaClick here to view code.
ggsave(here("public", "Figures", "RegressionAnalysis", "eaPC1CatComplex.png"), PC1_CatComplexea, height = 10, width = 15, units = "cm", bg = 'white')9.6.1.5 /ua/ morpheme boundary (Manuscript Figure 12 )
Click here to view code.
ua$complex <- factor(ua$complex, levels = c("FALSE", "TRUE"))Click here to view code.
PC1_Complexua <- plot_model(hyp.mod.ua, type = "pred", terms = c("complex"),
title = " ", axis.title = c("morpheme boundary", "uPC1 score: hiatus-like ↔ diphthong-like")) +
theme_minimal() +
theme(legend.position = "bottom")
PC1_ComplexuaClick here to view code.
ggsave(here("public", "Figures", "RegressionAnalysis", "uaPC1Complex.png"), PC1_Complexua, height = 10, width = 15, units = "cm", bg = 'white')10 Speaker intercept analysis (Manuscript §4.3.1)
10.1 Plot showing distribution of uPC results per speaker (Manuscript Figure 13)
This plot uses a data frame created in Section 7.4.
- Filter out mid tokens, count number of high and low uPC1 tokens.
Click here to view code.
per_speaker_PC_results <- results_extreme_all %>%
filter(PC1cat != "mid") %>%
select(MatchId, Speaker, PC1cat, sequence) %>%
group_by(Speaker, sequence, PC1cat) %>%
count()- Only include speakers who have all 4 sequences
Click here to view code.
per_speaker_PC_results <- per_speaker_PC_results %>%
group_by(Speaker) %>%
filter(n_distinct(sequence) == 4) %>%
ungroup()- Order data, with speakers with most low scoring tokens first
Click here to view code.
speaker_order <- per_speaker_PC_results %>%
group_by(Speaker) %>%
mutate(total_n = sum(n)) %>%
filter(PC1cat == "low") %>%
summarise(prop_low = sum(n) / first(total_n)) %>%
arrange(desc(prop_low)) %>%
pull(Speaker)
per_speaker_PC_results$Speaker <- factor(per_speaker_PC_results$Speaker, levels = speaker_order)- Adjust order of sequences
Click here to view code.
per_speaker_PC_results$sequence <- factor(per_speaker_PC_results$sequence, levels = c("ia", "ea", "oa", "ua"))- Create plot + save
Click here to view code.
per_speaker_plot <- ggplot(per_speaker_PC_results, aes(x = sequence, y = n, fill = PC1cat)) +
geom_bar(stat = "identity", position = "fill") +
labs(y = " ", x = "sequence") +
theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.5, size = 8)) +
scale_fill_manual(name = "uPC1 Category", values = c("hi" = "#F8766D", "low" = "#00BFC4")) +
facet_wrap(~ Speaker, nrow = 5) +
theme(legend.position="bottom")
per_speaker_plotClick here to view code.
ggsave(here("public", "Figures", "SpeakerInterceptAnalysis", "PC1ScoresPerSpeakerPerSeq.pdf"), per_speaker_plot, width = 30, height = 15, units = "cm")10.2 Speaker intercepts analysis + visualisation (Manuscript Figure 14)
- Read in data if need be
Click here to view code.
speaker_intercepts_ea <- read.csv(here("public", "Data", "speaker_intercepts_ea.csv")) %>%
select(-X, -sequence) %>%
rename(ea_speaker_intercept = Intercept)
speaker_intercepts_ia <- read.csv(here("public", "Data", "speaker_intercepts_ia.csv")) %>%
select(-X, -sequence) %>%
rename(ia_speaker_intercept = Intercept)
speaker_intercepts_oa <- read.csv(here("public", "Data", "speaker_intercepts_oa.csv")) %>%
select(-X, -sequence) %>%
rename(oa_speaker_intercept = Intercept)
speaker_intercepts_ua <- read.csv(here("public", "Data", "speaker_intercepts_ua.csv")) %>%
select(-X, -sequence) %>%
rename(ua_speaker_intercept = Intercept)- Create combined data frame of all intercepts
Click here to view code.
speaker_intercepts_all <- speaker_intercepts_ea %>%
left_join(speaker_intercepts_ia, by = "Speaker") %>%
left_join(speaker_intercepts_oa, by = "Speaker") %>%
left_join(speaker_intercepts_ua, by = "Speaker")
write.csv(speaker_intercepts_all, here("public", "Data","opening_seqs_speaker_intercepts.csv"))- Define function for creating correlation plot. This is an adapted version of the pairscor.fnc() function (used above) from the languageR() package (Baayen 2022). It rounds p values <0.001 as such.
Click here to view code.
pairscor.fnc_custom <- function(data, hist = TRUE, smooth = TRUE,
cex.points = 1, col.points = "darkgrey") {
panel.hist <- function(x, ...) {
usr <- graphics::par("usr"); on.exit(graphics::par(usr))
graphics::par(usr = c(usr[1:2], 0, 1.5) )
h <- hist(x, plot = FALSE)
breaks <- h$breaks; nB <- length(breaks)
y <- h$counts; y <- y/max(y)
graphics::rect(breaks[-nB], 0, breaks[-1], y, ...)
}
pairscor.lower <- function(x, y, ...) {
usr <- graphics::par("usr"); on.exit(graphics::par(usr))
graphics::par(usr = c(0, 1, 0, 1))
# Pearson correlation
m = stats::cor.test(x, y)
r = round(m$estimate, 2) # Show r with 2 decimal places
p = m$p.value
p_display = ifelse(p < 0.001, "<0.001", round(p, 6)) # Modify p-value for display
rtxt = paste("r =", r)
ptxt = paste("p =", p_display)
# Spearman correlation
options(warn=-1) # ignore warnings
m2 = stats::cor.test(x, y, method="spearman")
r2 = round(m2$estimate, 2) # Show rs with 2 decimal places
p2 = m2$p.value
p2_display = ifelse(p2 < 0.001, "<0.001", round(p2, 4)) # Modify p-value for display
rtxt2 = paste("rs =", r2)
ptxt2 = paste("p =", p2_display)
options(warn=0)
graphics::text(0.5, 0.8, rtxt)
graphics::text(0.5, 0.6, ptxt)
graphics::lines(c(0.2, 0.8), c(0.5, 0.5))
graphics::text(0.5, 0.4, rtxt2)
graphics::text(0.5, 0.2, ptxt2)
}
panel.smooth2 = function (x, y, col = graphics::par("col"), bg = NA, pch = graphics::par("pch"),
cex = 1, span = 2/3, iter = 3, ...) {
graphics::points(x, y, pch = pch, col = col, bg = bg, cex = cex)
ok <- is.finite(x) & is.finite(y)
if (any(ok))
graphics::lines(stats::lowess(x[ok], y[ok], f = span, iter = iter),
col = "black", ...)
}
if (hist == TRUE) {
if (smooth == TRUE) {
graphics::pairs(data,
diag.panel = panel.hist,
lower.panel = pairscor.lower,
upper.panel = panel.smooth2, col = col.points,
cex = cex.points)
} else {
graphics::pairs(data,
diag.panel = panel.hist,
lower.panel = pairscor.lower)
}
} else {
if (smooth == TRUE) {
graphics::pairs(data, lower.panel = pairscor.lower,
upper.panel = panel.smooth2, col = col.points,
cex = cex.points)
} else {
graphics::pairs(data, lower.panel = pairscor.lower)
}
}
}- Create plot + save
Click here to view code.
pdf(here("public", "Figures", "SpeakerInterceptAnalysis", "SpeakerInterceptCorrelation.pdf"), width = 7, height = 5)
pairscor.fnc_custom(select(speaker_intercepts_all, ia_speaker_intercept, ea_speaker_intercept, oa_speaker_intercept, ua_speaker_intercept))
# Close the device to save the plot
dev.off()png
2
11 Speaker category visualisations (Manuscript §4.3.2)
- Data
Click here to view code.
sequences = read.csv(here("public", "Data", "formants_filtered_all.csv")) %>%
dplyr::select(Vowel, MatchId, word, After.Match, category, participant_gender, time, Formant, Frequency, Target.vowelCluster.start, Target.vowelCluster.end)
monophthongs = read.csv(here("public", "Data", "monophthongsfinal.csv"))- Some data prep
Click here to view code.
sequences$participant_gender = as.factor(sequences$participant_gender)
sequences$category = as.factor(sequences$category)
sequences$Vowel = as.factor(sequences$Vowel)
sequences$category_gender = interaction(sequences$participant_gender, sequences$category)- View Data
Click here to view code.
vowels <- sequences
vowels %>%
head(10) %>%
kable() %>%
kable_styling(font_size = 11) %>%
scroll_box(width = "100%")| Vowel | MatchId | word | After.Match | category | participant_gender | time | Formant | Frequency | Target.vowelCluster.start | Target.vowelCluster.end | category_gender |
|---|---|---|---|---|---|---|---|---|---|---|---|
| ea | g_12;em_12_903;n_31539-n_31540;p_28;#=ew_69_149484;prefix=00078-;[0]=ew_0_7982 | mea | hoki | PresentElder | M | 1 | F1_lobanov_2.0 | -0.7105541 | 95.284 | 95.344 | M.PresentElder |
| ea | g_12;em_12_903;n_31539-n_31540;p_28;#=ew_69_149484;prefix=00078-;[0]=ew_0_7982 | mea | hoki | PresentElder | M | 1 | F2_lobanov_2.0 | 0.2266319 | 95.284 | 95.344 | M.PresentElder |
| ea | g_12;em_12_903;n_31539-n_31540;p_28;#=ew_69_149484;prefix=00078-;[0]=ew_0_7982 | mea | hoki | PresentElder | M | 2 | F1_lobanov_2.0 | -0.3871576 | 95.284 | 95.344 | M.PresentElder |
| ea | g_12;em_12_903;n_31539-n_31540;p_28;#=ew_69_149484;prefix=00078-;[0]=ew_0_7982 | mea | hoki | PresentElder | M | 2 | F2_lobanov_2.0 | 0.3022614 | 95.284 | 95.344 | M.PresentElder |
| ea | g_12;em_12_903;n_31539-n_31540;p_28;#=ew_69_149484;prefix=00078-;[0]=ew_0_7982 | mea | hoki | PresentElder | M | 3 | F1_lobanov_2.0 | -0.0334427 | 95.284 | 95.344 | M.PresentElder |
| ea | g_12;em_12_903;n_31539-n_31540;p_28;#=ew_69_149484;prefix=00078-;[0]=ew_0_7982 | mea | hoki | PresentElder | M | 3 | F2_lobanov_2.0 | 0.3267298 | 95.284 | 95.344 | M.PresentElder |
| ea | g_12;em_12_903;n_31539-n_31540;p_28;#=ew_69_149484;prefix=00078-;[0]=ew_0_7982 | mea | hoki | PresentElder | M | 4 | F1_lobanov_2.0 | 0.2192108 | 95.284 | 95.344 | M.PresentElder |
| ea | g_12;em_12_903;n_31539-n_31540;p_28;#=ew_69_149484;prefix=00078-;[0]=ew_0_7982 | mea | hoki | PresentElder | M | 4 | F2_lobanov_2.0 | 0.3356274 | 95.284 | 95.344 | M.PresentElder |
| ea | g_12;em_12_903;n_31539-n_31540;p_28;#=ew_69_149484;prefix=00078-;[0]=ew_0_7982 | mea | hoki | PresentElder | M | 5 | F1_lobanov_2.0 | 0.3303783 | 95.284 | 95.344 | M.PresentElder |
| ea | g_12;em_12_903;n_31539-n_31540;p_28;#=ew_69_149484;prefix=00078-;[0]=ew_0_7982 | mea | hoki | PresentElder | M | 5 | F2_lobanov_2.0 | 0.3067102 | 95.284 | 95.344 | M.PresentElder |
- Some more data prep
Click here to view code.
vowels <- vowels %>%
mutate(preceding = str_match(word, "(.*)[eiou]a")[,2] %>%
str_extract("(wh|ng|[^:]{0,1}:*)$") %>%
str_remove_all(":") %>%
factor(),
following = str_match(word, "[eiou]a(.*)")[,2] %>%
str_extract("^[-:]*(wh|ng|[^:]{0,1}:*)") %>%
str_remove_all("[-:]") %>%
ifelse(.=="",
After.Match %>%
str_to_lower() %>%
str_extract("^([<>~?:\"' ]|-)*(wh|ng|.{0,1})") %>%
str_remove("[<>~?:\"' -]+") %>%
paste0("$", .),
.) %>%
factor(),
time_left = exp(-(time-1)/1.5),
time_right = exp(-(9-time)/1.5),
duration = Target.vowelCluster.end - Target.vowelCluster.start,
preceding_category_gender = paste(preceding, category_gender) %>% factor(),
following_category_gender = paste(following, category_gender) %>% factor(),
) %>%
group_by(MatchId) %>%
mutate(traj_start=time==min(time)) %>%
ungroup()- Nest data
Click here to view code.
vowels <- vowels %>%
group_by(Vowel, Formant) %>%
nest()- Fit GAMs to the data
Click here to view code.
vowels <- vowels %>%
mutate(
model = map(
data, # We are applying a function to the entries of the `data` column.
# This is the function we are applying (introduced with a ~)
~ bam(
# Here's our formula.
Frequency ~
category_gender +
s(time, by=category_gender, k=9) +
s(duration, k=9) +
ti(time,duration,k=c(9,9)) +
s(time_left, preceding_category_gender, bs="re") +
s(time_right, following_category_gender, bs="re"),
data = .x,
method = 'fREML',
discrete = TRUE,
AR.start=.x$traj_start, rho=0.7
)
)
)- Get predictions
Click here to view code.
to_predict <- list(
"time" = seq(from=1, to=9, by=1), # All years
"category_gender" =
c("M.L1","M.L2","M.Historical","M.PresentElder",
"F.L1","F.L2","F.Historical","F.PresentElder"
)
)
vowels <- vowels %>%
mutate(
prediction = map(
model, # This time we're applying the function to all the models.
# We again introduce the function with '~', and indicate where the model
# goes with '.x'.
~ get_predictions(model = .x, cond = to_predict, rm.ranef=T, print.summary = FALSE)
)
)- View predictions
Click here to view code.
vowels$prediction[[1]] %>%
kable() %>%
kable_styling() %>%
scroll_box(width = "100%")| category_gender | time | duration | time_left | preceding_category_gender | time_right | following_category_gender | fit | CI | rm.ranef |
|---|---|---|---|---|---|---|---|---|---|
| M.L1 | 1 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.3001625 | 0.2184892 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| M.L2 | 1 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | -0.1640612 | 0.2196264 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| M.Historical | 1 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.7094868 | 0.2141206 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| M.PresentElder | 1 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.2734123 | 0.1937801 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| F.L1 | 1 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.2205627 | 0.2131089 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| F.L2 | 1 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | -0.2211095 | 0.2260973 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| F.Historical | 1 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.7048686 | 0.2472512 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| F.PresentElder | 1 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.3553471 | 0.2003759 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| M.L1 | 2 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.7156480 | 0.1327896 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| M.L2 | 2 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.1732826 | 0.1351625 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| M.Historical | 2 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.0463242 | 0.1464127 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| M.PresentElder | 2 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.6597681 | 0.1132917 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| F.L1 | 2 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.6956143 | 0.1302862 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| F.L2 | 2 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.1317779 | 0.1406179 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| F.Historical | 2 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.2555968 | 0.1548018 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| F.PresentElder | 2 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.7232717 | 0.1161893 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| M.L1 | 3 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.0766336 | 0.0948775 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| M.L2 | 3 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.5072483 | 0.0967902 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| M.Historical | 3 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.3605645 | 0.1193179 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| M.PresentElder | 3 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.9317287 | 0.0758709 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| F.L1 | 3 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.1664112 | 0.0949919 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| F.L2 | 3 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.4976774 | 0.1028665 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| F.Historical | 3 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.7134630 | 0.1168335 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| F.PresentElder | 3 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.9954177 | 0.0773528 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| M.L1 | 4 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.3215932 | 0.0834248 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| M.L2 | 4 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.7683137 | 0.0851868 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| M.Historical | 4 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.5683260 | 0.1120174 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| M.PresentElder | 4 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.1104969 | 0.0632759 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| F.L1 | 4 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.4898334 | 0.0849787 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| F.L2 | 4 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.8151049 | 0.0916013 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| F.Historical | 4 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 2.0492417 | 0.1071094 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| F.PresentElder | 4 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.1457513 | 0.0645823 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| M.L1 | 5 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.3912724 | 0.0818021 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| M.L2 | 5 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.9395691 | 0.0833101 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| M.Historical | 5 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.6649460 | 0.1124548 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| M.PresentElder | 5 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.2363837 | 0.0610670 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| F.L1 | 5 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.5967851 | 0.0842728 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| F.L2 | 5 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.0228821 | 0.0902144 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| F.Historical | 5 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 2.1939633 | 0.1066237 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| F.PresentElder | 5 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.2033547 | 0.0625954 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| M.L1 | 6 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.3573475 | 0.0862461 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| M.L2 | 6 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.0152661 | 0.0879352 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| M.Historical | 6 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.6846007 | 0.1159308 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| M.PresentElder | 6 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.3359165 | 0.0657450 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| F.L1 | 6 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.5553870 | 0.0893239 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| F.L2 | 6 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.0814261 | 0.0956797 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| F.Historical | 6 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 2.0972918 | 0.1115566 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| F.PresentElder | 6 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.1707673 | 0.0679519 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| M.L1 | 7 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.3075952 | 0.1039840 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| M.L2 | 7 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.0041329 | 0.1057389 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| M.Historical | 7 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.7350257 | 0.1306622 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| M.PresentElder | 7 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.3685773 | 0.0834576 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| F.L1 | 7 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.4232194 | 0.1094167 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| F.L2 | 7 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.0361559 | 0.1156048 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| F.Historical | 7 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.8254579 | 0.1281818 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| F.PresentElder | 7 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.1056578 | 0.0878951 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| M.L1 | 8 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.3293709 | 0.1543553 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| M.L2 | 8 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.9732296 | 0.1579444 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| M.Historical | 8 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.7113881 | 0.1784391 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| M.PresentElder | 8 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.3487861 | 0.1320141 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| F.L1 | 8 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.2722696 | 0.1681584 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| F.L2 | 8 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.9371674 | 0.1736587 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| F.Historical | 8 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.3983980 | 0.1794817 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| F.PresentElder | 8 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.9931836 | 0.1418941 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| M.L1 | 9 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.4305750 | 0.2623701 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| M.L2 | 9 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.0181457 | 0.2651580 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| M.Historical | 9 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.7052147 | 0.2805931 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| M.PresentElder | 9 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.3105094 | 0.2319252 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| F.L1 | 9 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.1581208 | 0.2917110 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| F.L2 | 9 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.8814072 | 0.2939164 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| F.Historical | 9 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.8772815 | 0.2967280 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| F.PresentElder | 9 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.8361188 | 0.2525032 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
- Unnest
Click here to view code.
predictions <- vowels %>%
select(
Vowel, Formant, prediction
) %>%
unnest(prediction)
predictions %>%
kable() %>%
kable_styling() %>%
scroll_box(width = "100%")| Vowel | Formant | category_gender | time | duration | time_left | preceding_category_gender | time_right | following_category_gender | fit | CI | rm.ranef |
|---|---|---|---|---|---|---|---|---|---|---|---|
| ea | F1_lobanov_2.0 | M.L1 | 1 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.3001625 | 0.2184892 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | M.L2 | 1 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | -0.1640612 | 0.2196264 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | M.Historical | 1 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.7094868 | 0.2141206 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | M.PresentElder | 1 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.2734123 | 0.1937801 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | F.L1 | 1 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.2205627 | 0.2131089 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | F.L2 | 1 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | -0.2211095 | 0.2260973 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | F.Historical | 1 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.7048686 | 0.2472512 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | F.PresentElder | 1 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.3553471 | 0.2003759 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | M.L1 | 2 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.7156480 | 0.1327896 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | M.L2 | 2 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.1732826 | 0.1351625 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | M.Historical | 2 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.0463242 | 0.1464127 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | M.PresentElder | 2 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.6597681 | 0.1132917 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | F.L1 | 2 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.6956143 | 0.1302862 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | F.L2 | 2 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.1317779 | 0.1406179 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | F.Historical | 2 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.2555968 | 0.1548018 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | F.PresentElder | 2 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.7232717 | 0.1161893 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | M.L1 | 3 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.0766336 | 0.0948775 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | M.L2 | 3 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.5072483 | 0.0967902 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | M.Historical | 3 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.3605645 | 0.1193179 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | M.PresentElder | 3 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.9317287 | 0.0758709 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | F.L1 | 3 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.1664112 | 0.0949919 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | F.L2 | 3 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.4976774 | 0.1028665 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | F.Historical | 3 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.7134630 | 0.1168335 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | F.PresentElder | 3 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.9954177 | 0.0773528 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | M.L1 | 4 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.3215932 | 0.0834248 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | M.L2 | 4 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.7683137 | 0.0851868 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | M.Historical | 4 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.5683260 | 0.1120174 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | M.PresentElder | 4 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.1104969 | 0.0632759 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | F.L1 | 4 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.4898334 | 0.0849787 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | F.L2 | 4 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.8151049 | 0.0916013 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | F.Historical | 4 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 2.0492417 | 0.1071094 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | F.PresentElder | 4 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.1457513 | 0.0645823 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | M.L1 | 5 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.3912724 | 0.0818021 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | M.L2 | 5 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.9395691 | 0.0833101 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | M.Historical | 5 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.6649460 | 0.1124548 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | M.PresentElder | 5 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.2363837 | 0.0610670 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | F.L1 | 5 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.5967851 | 0.0842728 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | F.L2 | 5 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.0228821 | 0.0902144 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | F.Historical | 5 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 2.1939633 | 0.1066237 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | F.PresentElder | 5 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.2033547 | 0.0625954 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | M.L1 | 6 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.3573475 | 0.0862461 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | M.L2 | 6 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.0152661 | 0.0879352 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | M.Historical | 6 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.6846007 | 0.1159308 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | M.PresentElder | 6 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.3359165 | 0.0657450 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | F.L1 | 6 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.5553870 | 0.0893239 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | F.L2 | 6 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.0814261 | 0.0956797 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | F.Historical | 6 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 2.0972918 | 0.1115566 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | F.PresentElder | 6 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.1707673 | 0.0679519 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | M.L1 | 7 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.3075952 | 0.1039840 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | M.L2 | 7 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.0041329 | 0.1057389 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | M.Historical | 7 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.7350257 | 0.1306622 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | M.PresentElder | 7 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.3685773 | 0.0834576 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | F.L1 | 7 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.4232194 | 0.1094167 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | F.L2 | 7 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.0361559 | 0.1156048 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | F.Historical | 7 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.8254579 | 0.1281818 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | F.PresentElder | 7 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.1056578 | 0.0878951 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | M.L1 | 8 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.3293709 | 0.1543553 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | M.L2 | 8 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.9732296 | 0.1579444 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | M.Historical | 8 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.7113881 | 0.1784391 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | M.PresentElder | 8 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.3487861 | 0.1320141 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | F.L1 | 8 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.2722696 | 0.1681584 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | F.L2 | 8 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.9371674 | 0.1736587 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | F.Historical | 8 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.3983980 | 0.1794817 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | F.PresentElder | 8 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.9931836 | 0.1418941 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | M.L1 | 9 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.4305750 | 0.2623701 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | M.L2 | 9 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.0181457 | 0.2651580 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | M.Historical | 9 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.7052147 | 0.2805931 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | M.PresentElder | 9 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.3105094 | 0.2319252 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | F.L1 | 9 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 1.1581208 | 0.2917110 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | F.L2 | 9 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.8814072 | 0.2939164 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | F.Historical | 9 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.8772815 | 0.2967280 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F1_lobanov_2.0 | F.PresentElder | 9 | 0.14 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.8361188 | 0.2525032 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | M.L1 | 1 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.4922088 | 0.2246960 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | M.L2 | 1 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.9291806 | 0.1522655 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | M.Historical | 1 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.6521965 | 0.2496705 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | M.PresentElder | 1 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.6664922 | 0.1243063 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | F.L1 | 1 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.5966031 | 0.2295400 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | F.L2 | 1 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.8688500 | 0.2686616 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | F.Historical | 1 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.8484837 | 0.2418428 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | F.PresentElder | 1 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.8174768 | 0.1376608 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | M.L1 | 2 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.4910429 | 0.1325887 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | M.L2 | 2 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.9600434 | 0.1031537 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | M.Historical | 2 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.6957933 | 0.1512226 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | M.PresentElder | 2 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.7124294 | 0.0803477 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | F.L1 | 2 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.5591760 | 0.1346864 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | F.L2 | 2 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.9100470 | 0.1554924 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | F.Historical | 2 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.8560459 | 0.1438448 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | F.PresentElder | 2 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.8635654 | 0.0859107 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | M.L1 | 3 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.4682455 | 0.0801749 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | M.L2 | 3 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.9742385 | 0.0717879 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | M.Historical | 3 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.6913795 | 0.0962697 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | M.PresentElder | 3 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.7402585 | 0.0541084 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | F.L1 | 3 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.5145208 | 0.0812502 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | F.L2 | 3 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.8769327 | 0.0931471 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | F.Historical | 3 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.8165425 | 0.0885678 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | F.PresentElder | 3 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.8879651 | 0.0557313 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | M.L1 | 4 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.3820985 | 0.0590105 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | M.L2 | 4 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.9151735 | 0.0566883 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | M.Historical | 4 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.6326952 | 0.0751082 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | M.PresentElder | 4 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.7040187 | 0.0424701 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | F.L1 | 4 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.4086794 | 0.0600150 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | F.L2 | 4 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.7568812 | 0.0687092 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | F.Historical | 4 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.6987645 | 0.0666320 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | F.PresentElder | 4 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.8390508 | 0.0428010 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | M.L1 | 5 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.2601021 | 0.0532132 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | M.L2 | 5 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.7881027 | 0.0522805 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | M.Historical | 5 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.5776150 | 0.0697413 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | M.PresentElder | 5 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.6098855 | 0.0392838 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | F.L1 | 5 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.2706918 | 0.0543324 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | F.L2 | 5 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.5650271 | 0.0618714 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | F.Historical | 5 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.5164629 | 0.0608935 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | F.PresentElder | 5 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.7272027 | 0.0394221 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | M.L1 | 6 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.1404017 | 0.0546612 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | M.L2 | 6 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.6274865 | 0.0546266 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | M.Historical | 6 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.5040741 | 0.0708108 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | M.PresentElder | 6 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.4876445 | 0.0411452 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | F.L1 | 6 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.1160367 | 0.0561632 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | F.L2 | 6 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.3686113 | 0.0632185 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | F.Historical | 6 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.3202945 | 0.0624064 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | F.PresentElder | 6 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.5881455 | 0.0414005 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | M.L1 | 7 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.0595389 | 0.0654527 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | M.L2 | 7 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.4781836 | 0.0653608 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | M.Historical | 7 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.4330090 | 0.0811533 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | M.PresentElder | 7 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.3754976 | 0.0499304 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | F.L1 | 7 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | -0.0070427 | 0.0684284 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | F.L2 | 7 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.2179652 | 0.0753367 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | F.Historical | 7 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.1597211 | 0.0735968 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | F.PresentElder | 7 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.4617515 | 0.0510936 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | M.L1 | 8 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.0106909 | 0.0962643 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | M.L2 | 8 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.3454312 | 0.0890375 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | M.Historical | 8 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.3800961 | 0.1119831 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | M.PresentElder | 8 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.2772827 | 0.0707516 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | F.L1 | 8 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | -0.0698587 | 0.1028943 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | F.L2 | 8 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.1184364 | 0.1112121 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | F.Historical | 8 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.0537204 | 0.1063065 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | F.PresentElder | 8 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.3515380 | 0.0750362 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | M.L1 | 9 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | -0.0645986 | 0.1553438 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | M.L2 | 9 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.1837021 | 0.1278763 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | M.Historical | 9 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.3057793 | 0.1737852 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | M.PresentElder | 9 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.1487549 | 0.1067346 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | F.L1 | 9 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | -0.1484262 | 0.1688187 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | F.L2 | 9 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.0133590 | 0.1826465 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | F.Historical | 9 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | -0.0524787 | 0.1694215 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ea | F2_lobanov_2.0 | F.PresentElder | 9 | 0.15 | 0.0694835 | m M.PresentElder | 0.0694835 | $k F.PresentElder | 0.2127523 | 0.1174071 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | M.L1 | 1 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.0997887 | 0.2117211 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | M.L2 | 1 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | -0.3781810 | 0.2314996 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | M.Historical | 1 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | -0.5829025 | 0.2089889 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | M.PresentElder | 1 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | -0.6665813 | 0.1742107 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | F.L1 | 1 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | -0.0763600 | 0.2315377 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | F.L2 | 1 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.1334826 | 0.2296687 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | F.Historical | 1 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | -0.3502599 | 0.2020059 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | F.PresentElder | 1 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | -0.5950540 | 0.1709972 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | M.L1 | 2 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.5197815 | 0.1404369 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | M.L2 | 2 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | -0.0310299 | 0.1533618 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | M.Historical | 2 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | -0.3026589 | 0.1350182 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | M.PresentElder | 2 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | -0.5136457 | 0.1103282 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | F.L1 | 2 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.3844793 | 0.1471848 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | F.L2 | 2 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.6207663 | 0.1497771 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | F.Historical | 2 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | -0.0165004 | 0.1326253 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | F.PresentElder | 2 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | -0.3667191 | 0.1067365 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | M.L1 | 3 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.8768883 | 0.1110931 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | M.L2 | 3 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.2991202 | 0.1203484 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | M.Historical | 3 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.0552478 | 0.1043728 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | M.PresentElder | 3 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | -0.3135870 | 0.0792615 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | F.L1 | 3 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.8108229 | 0.1123238 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | F.L2 | 3 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 1.0560495 | 0.1169580 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | F.Historical | 3 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.2893908 | 0.1039808 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | F.PresentElder | 3 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | -0.1322028 | 0.0761443 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | M.L1 | 4 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 1.1046870 | 0.1025901 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | M.L2 | 4 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.5955704 | 0.1105900 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | M.Historical | 4 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.3999274 | 0.0961852 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | M.PresentElder | 4 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | -0.0820086 | 0.0692153 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | F.L1 | 4 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 1.0873304 | 0.1028591 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | F.L2 | 4 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 1.3376638 | 0.1081053 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | F.Historical | 4 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.5411318 | 0.0966590 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | F.PresentElder | 4 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.0805882 | 0.0665418 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | M.L1 | 5 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 1.2069399 | 0.1014552 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | M.L2 | 5 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.8481927 | 0.1093071 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | M.Historical | 5 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.6559427 | 0.0955477 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | M.PresentElder | 5 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.1499617 | 0.0674965 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | F.L1 | 5 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 1.2028981 | 0.1022400 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | F.L2 | 5 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 1.4765202 | 0.1072545 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | F.Historical | 5 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.7362061 | 0.0965209 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | F.PresentElder | 5 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.2756714 | 0.0654265 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | M.L1 | 6 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 1.2483783 | 0.1054535 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | M.L2 | 6 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.9571255 | 0.1130541 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | M.Historical | 6 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.7807075 | 0.0994637 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | M.PresentElder | 6 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.3653211 | 0.0710930 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | F.L1 | 6 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 1.1640800 | 0.1066662 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | F.L2 | 6 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 1.4426837 | 0.1104160 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | F.Historical | 6 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.7959421 | 0.1005614 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | F.PresentElder | 6 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.4251115 | 0.0696354 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | M.L1 | 7 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 1.2648664 | 0.1190661 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | M.L2 | 7 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.9747907 | 0.1282602 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | M.Historical | 7 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.8194557 | 0.1144033 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | M.PresentElder | 7 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.5314148 | 0.0856094 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | F.L1 | 7 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 1.0726381 | 0.1236096 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | F.L2 | 7 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 1.3264232 | 0.1265702 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | F.Historical | 7 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.7478940 | 0.1179230 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | F.PresentElder | 7 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.5015352 | 0.0851977 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | M.L1 | 8 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 1.2812868 | 0.1631296 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | M.L2 | 8 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.9595316 | 0.1749371 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | M.Historical | 8 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.7589463 | 0.1609440 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | M.PresentElder | 8 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.6448426 | 0.1267093 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | F.L1 | 8 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.9747998 | 0.1774387 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | F.L2 | 8 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 1.2134142 | 0.1772082 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | F.Historical | 8 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.6004375 | 0.1697178 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | F.PresentElder | 8 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.5371529 | 0.1293820 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | M.L1 | 9 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 1.2629497 | 0.2588524 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | M.L2 | 9 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.9107309 | 0.2729093 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | M.Historical | 9 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.7072584 | 0.2615516 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | M.PresentElder | 9 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.7298395 | 0.2060156 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | F.L1 | 9 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.8920735 | 0.2946223 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | F.L2 | 9 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 1.1272453 | 0.2879573 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | F.Historical | 9 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.4036119 | 0.2779696 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F1_lobanov_2.0 | F.PresentElder | 9 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.5804067 | 0.2152643 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | M.L1 | 1 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 1.2006944 | 0.2355463 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | M.L2 | 1 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 1.1021175 | 0.2291042 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | M.Historical | 1 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 1.3766937 | 0.2456334 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | M.PresentElder | 1 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 1.6487123 | 0.1388480 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | F.L1 | 1 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.8946722 | 0.2748720 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | F.L2 | 1 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.9818566 | 0.2455966 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | F.Historical | 1 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 1.3589178 | 0.2198699 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | F.PresentElder | 1 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 1.6085773 | 0.1877423 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | M.L1 | 2 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 1.0059491 | 0.1431443 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | M.L2 | 2 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 1.0671022 | 0.1482100 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | M.Historical | 2 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 1.3372551 | 0.1499189 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | M.PresentElder | 2 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 1.5775826 | 0.0933223 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | F.L1 | 2 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.7645492 | 0.1614770 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | F.L2 | 2 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.8560081 | 0.1522520 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | F.Historical | 2 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 1.2288707 | 0.1373190 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | F.PresentElder | 2 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 1.5316525 | 0.1114413 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | M.L1 | 3 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.7532821 | 0.0953181 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | M.L2 | 3 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.9472503 | 0.1020727 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | M.Historical | 3 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 1.1880263 | 0.0963548 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | M.PresentElder | 3 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 1.4338974 | 0.0657239 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | F.L1 | 3 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.6249866 | 0.1037283 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | F.L2 | 3 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.6797716 | 0.1016642 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | F.Historical | 3 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 1.0412112 | 0.0915289 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | F.PresentElder | 3 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 1.3663739 | 0.0697892 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | M.L1 | 4 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.4994538 | 0.0783799 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | M.L2 | 4 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.7878063 | 0.0843904 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | M.Historical | 4 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 1.0035505 | 0.0759853 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | M.PresentElder | 4 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 1.2401601 | 0.0532600 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | F.L1 | 4 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.4173596 | 0.0832365 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | F.L2 | 4 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.4960706 | 0.0830810 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | F.Historical | 4 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.8253418 | 0.0742863 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | F.PresentElder | 4 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 1.1500961 | 0.0540039 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | M.L1 | 5 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.2901241 | 0.0743692 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | M.L2 | 5 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.6114290 | 0.0801855 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | M.Historical | 5 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.8389249 | 0.0709473 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | M.PresentElder | 5 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 1.0337829 | 0.0498940 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | F.L1 | 5 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.2282215 | 0.0782441 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | F.L2 | 5 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.3548359 | 0.0784463 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | F.Historical | 5 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.6199382 | 0.0702554 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | F.PresentElder | 5 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.9409887 | 0.0501827 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | M.L1 | 6 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.1222916 | 0.0763450 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | M.L2 | 6 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.4470152 | 0.0823581 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | M.Historical | 6 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.6906841 | 0.0729151 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | M.PresentElder | 6 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.8189543 | 0.0522771 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | F.L1 | 6 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.1316718 | 0.0802042 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | F.L2 | 6 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.2419016 | 0.0805427 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | F.Historical | 6 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.4465135 | 0.0728724 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | F.PresentElder | 6 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.7321416 | 0.0523828 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | M.L1 | 7 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | -0.0032129 | 0.0868271 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | M.L2 | 7 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.2947846 | 0.0943480 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | M.Historical | 7 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.5478419 | 0.0844677 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | M.PresentElder | 7 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.5836403 | 0.0622535 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | F.L1 | 7 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.0202962 | 0.0929474 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | F.L2 | 7 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.1393505 | 0.0924991 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | F.Historical | 7 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.2829982 | 0.0862404 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | F.PresentElder | 7 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.5069119 | 0.0635422 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | M.L1 | 8 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | -0.0984814 | 0.1188023 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | M.L2 | 8 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.1686698 | 0.1275796 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | M.Historical | 8 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.4408077 | 0.1180936 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | M.PresentElder | 8 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.3672560 | 0.0850393 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | F.L1 | 8 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | -0.0842216 | 0.1326383 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | F.L2 | 8 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.0611005 | 0.1276495 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | F.Historical | 8 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.1396774 | 0.1229940 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | F.PresentElder | 8 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.3263384 | 0.0950954 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | M.L1 | 9 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | -0.1665140 | 0.1863929 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | M.L2 | 9 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.0864138 | 0.1902631 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | M.Historical | 9 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.3759134 | 0.1841790 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | M.PresentElder | 9 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.1861423 | 0.1239712 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | F.L1 | 9 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | -0.1105423 | 0.2157775 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | F.L2 | 9 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.0200046 | 0.1972245 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | F.Historical | 9 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.0118404 | 0.1920415 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ia | F2_lobanov_2.0 | F.PresentElder | 9 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $m M.PresentElder | 0.2038846 | 0.1561357 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | M.L1 | 1 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.3320531 | 0.1608778 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | M.L2 | 1 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.0462805 | 0.1567411 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | M.Historical | 1 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.6357007 | 0.1630585 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | M.PresentElder | 1 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.3484763 | 0.1408889 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | F.L1 | 1 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.4080167 | 0.1722747 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | F.L2 | 1 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.1052505 | 0.1747370 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | F.Historical | 1 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.6132302 | 0.1718481 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | F.PresentElder | 1 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.3233672 | 0.1355562 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | M.L1 | 2 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.4567579 | 0.1189370 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | M.L2 | 2 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.1049556 | 0.1294649 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | M.Historical | 2 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.8930277 | 0.1229716 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | M.PresentElder | 2 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.4878892 | 0.1018789 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | F.L1 | 2 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.6656434 | 0.1267819 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | F.L2 | 2 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.1841778 | 0.1322137 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | F.Historical | 2 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.8175005 | 0.1254210 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | F.PresentElder | 2 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.4257646 | 0.0917885 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | M.L1 | 3 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.5988582 | 0.1018519 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | M.L2 | 3 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.1846186 | 0.1129068 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | M.Historical | 3 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 1.1463115 | 0.1093473 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | M.PresentElder | 3 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.6341633 | 0.0846259 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | F.L1 | 3 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.8957940 | 0.1110195 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | F.L2 | 3 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.3128188 | 0.1162972 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | F.Historical | 3 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 1.0078576 | 0.1082612 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | F.PresentElder | 3 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.5558908 | 0.0726754 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | M.L1 | 4 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.7564628 | 0.0972466 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | M.L2 | 4 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.2988489 | 0.1053223 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | M.Historical | 4 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 1.3729802 | 0.1063894 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | M.PresentElder | 4 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.8040121 | 0.0792534 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | F.L1 | 4 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 1.0994957 | 0.1076636 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | F.L2 | 4 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.4879479 | 0.1129219 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | F.Historical | 4 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 1.1753604 | 0.1043849 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | F.PresentElder | 4 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.7140244 | 0.0671404 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | M.L1 | 5 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.8542365 | 0.0979391 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | M.L2 | 5 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.3882247 | 0.1061334 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | M.Historical | 5 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 1.4921900 | 0.1080774 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | M.PresentElder | 5 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.9376229 | 0.0793742 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | F.L1 | 5 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 1.2343256 | 0.1082122 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | F.L2 | 5 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.6198595 | 0.1144002 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | F.Historical | 5 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 1.2570224 | 0.1053896 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | F.PresentElder | 5 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.8210124 | 0.0671934 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | M.L1 | 6 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.8798156 | 0.1028835 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | M.L2 | 6 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.4620797 | 0.1152926 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | M.Historical | 6 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 1.5053416 | 0.1129022 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | M.PresentElder | 6 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 1.0410503 | 0.0839636 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | F.L1 | 6 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 1.2815649 | 0.1135724 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | F.L2 | 6 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.6885424 | 0.1200347 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | F.Historical | 6 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 1.2529942 | 0.1104894 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | F.PresentElder | 6 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.8734318 | 0.0722879 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | M.L1 | 7 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.9019804 | 0.1196928 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | M.L2 | 7 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.5664867 | 0.1332346 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | M.Historical | 7 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 1.4676657 | 0.1311609 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | M.PresentElder | 7 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 1.1397007 | 0.0997233 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | F.L1 | 7 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 1.1483091 | 0.1328983 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | F.L2 | 7 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.7386033 | 0.1384426 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | F.Historical | 7 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 1.2167629 | 0.1293098 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | F.PresentElder | 7 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.9148799 | 0.0897950 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | M.L1 | 8 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.9724924 | 0.1650196 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | M.L2 | 8 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.7059625 | 0.1607847 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | M.Historical | 8 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 1.4458131 | 0.1857610 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | M.PresentElder | 8 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 1.2355620 | 0.1406809 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | F.L1 | 8 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 1.0058460 | 0.1896329 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | F.L2 | 8 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.8119567 | 0.1891669 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | F.Historical | 8 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 1.1353193 | 0.1818440 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | F.PresentElder | 8 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.9670035 | 0.1357754 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | M.L1 | 9 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 1.0471206 | 0.2490580 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | M.L2 | 9 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.8300309 | 0.1992690 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | M.Historical | 9 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 1.4150450 | 0.2943231 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | M.PresentElder | 9 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 1.3041443 | 0.2155263 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | F.L1 | 9 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.8904695 | 0.3100936 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | F.L2 | 9 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.9145564 | 0.2843897 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | F.Historical | 9 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 0.9601798 | 0.2869582 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F1_lobanov_2.0 | F.PresentElder | 9 | 0.15 | 0.0694835 | t F.PresentElder | 0.0694835 | $k F.PresentElder | 1.0180428 | 0.2203483 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | M.L1 | 1 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.5680070 | 0.1076292 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | M.L2 | 1 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.3531310 | 0.1790910 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | M.Historical | 1 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.5195445 | 0.1085395 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | M.PresentElder | 1 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.2492389 | 0.0907854 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | F.L1 | 1 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.8245973 | 0.1430719 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | F.L2 | 1 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.7721886 | 0.1602049 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | F.Historical | 1 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.6145145 | 0.1397479 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | F.PresentElder | 1 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.6097911 | 0.0803665 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | M.L1 | 2 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.5418458 | 0.0867217 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | M.L2 | 2 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.4928287 | 0.1158382 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | M.Historical | 2 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.5048524 | 0.0888211 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | M.PresentElder | 2 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.2472241 | 0.0722231 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | F.L1 | 2 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.7400612 | 0.1015804 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | F.L2 | 2 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.7031591 | 0.1105707 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | F.Historical | 2 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.6020526 | 0.0988295 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | F.PresentElder | 2 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.5770698 | 0.0615756 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | M.L1 | 3 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.4931454 | 0.0709955 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | M.L2 | 3 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.5541892 | 0.0850319 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | M.Historical | 3 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.4676146 | 0.0737527 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | M.PresentElder | 3 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.2226724 | 0.0587733 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | F.L1 | 3 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.6295545 | 0.0763926 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | F.L2 | 3 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.5925675 | 0.0825792 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | F.Historical | 3 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.5588528 | 0.0737796 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | F.PresentElder | 3 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.5218112 | 0.0491430 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | M.L1 | 4 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.4066453 | 0.0605030 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | M.L2 | 4 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.5330324 | 0.0750868 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | M.Historical | 4 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.3925810 | 0.0636404 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | M.PresentElder | 4 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.1603219 | 0.0499589 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | F.L1 | 4 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.4867382 | 0.0649761 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | F.L2 | 4 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.4376722 | 0.0713103 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | F.Historical | 4 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.4712048 | 0.0623808 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | F.PresentElder | 4 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.4287526 | 0.0418519 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | M.L1 | 5 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.3006360 | 0.0566958 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | M.L2 | 5 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.4657958 | 0.0732588 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | M.Historical | 5 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.2980417 | 0.0602614 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | M.PresentElder | 5 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.0784637 | 0.0466213 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | F.L1 | 5 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.3328491 | 0.0620860 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | F.L2 | 5 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.2712481 | 0.0687508 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | F.Historical | 5 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.3543654 | 0.0595959 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | F.PresentElder | 5 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.3161857 | 0.0394658 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | M.L1 | 6 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.1708270 | 0.0605461 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | M.L2 | 6 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.3369231 | 0.0751947 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | M.Historical | 6 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.1797143 | 0.0646288 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | M.PresentElder | 6 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -0.9728099 | 0.0495768 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | F.L1 | 6 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.1619129 | 0.0654427 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | F.L2 | 6 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.0984981 | 0.0716889 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | F.Historical | 6 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.2045438 | 0.0629698 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | F.PresentElder | 6 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.1798221 | 0.0420917 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | M.L1 | 7 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.0312576 | 0.0710688 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | M.L2 | 7 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.1599490 | 0.0846507 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | M.Historical | 7 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.0516413 | 0.0754499 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | M.PresentElder | 7 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -0.8574008 | 0.0581045 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | F.L1 | 7 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -0.9915839 | 0.0775064 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | F.L2 | 7 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -0.9320020 | 0.0835204 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | F.Historical | 7 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.0475429 | 0.0745209 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | F.PresentElder | 7 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -1.0337022 | 0.0494775 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | M.L1 | 8 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -0.8890966 | 0.0868724 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | M.L2 | 8 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -0.9661632 | 0.1135404 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | M.Historical | 8 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -0.9209775 | 0.0909798 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | M.PresentElder | 8 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -0.7394008 | 0.0712997 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | F.L1 | 8 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -0.8288830 | 0.1035398 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | F.L2 | 8 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -0.7770915 | 0.1122345 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | F.Historical | 8 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -0.8918058 | 0.0992183 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | F.PresentElder | 8 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -0.8849907 | 0.0619049 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | M.L1 | 9 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -0.7718722 | 0.1078162 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | M.L2 | 9 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -0.7682889 | 0.1729654 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | M.Historical | 9 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -0.8152560 | 0.1110403 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | M.PresentElder | 9 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -0.6463364 | 0.0896547 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | F.L1 | 9 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -0.6961438 | 0.1459016 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | F.L2 | 9 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -0.6470705 | 0.1626295 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | F.Historical | 9 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -0.7650758 | 0.1397592 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| oa | F2_lobanov_2.0 | F.PresentElder | 9 | 0.16 | 0.0694835 | t F.PresentElder | 0.0694835 | F.PresentElder | -0.7612145 | 0.0806811 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | M.L1 | 1 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.3458264 | 0.2032429 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | M.L2 | 1 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.2630743 | 0.2144019 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | M.Historical | 1 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.5148501 | 0.1931262 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | M.PresentElder | 1 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.6629920 | 0.1779310 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | F.L1 | 1 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.0489937 | 0.2075669 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | F.L2 | 1 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.1903167 | 0.2068916 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | F.Historical | 1 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.2567656 | 0.2036616 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | F.PresentElder | 1 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.3514289 | 0.1822802 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | M.L1 | 2 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.1258961 | 0.1196673 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | M.L2 | 2 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.2438807 | 0.1281166 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | M.Historical | 2 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.2869218 | 0.1171422 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | M.PresentElder | 2 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.5478937 | 0.1031562 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | F.L1 | 2 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.2440951 | 0.1205073 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | F.L2 | 2 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.0252263 | 0.1258503 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | F.Historical | 2 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.0032032 | 0.1234535 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | F.PresentElder | 2 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.1590819 | 0.1031103 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | M.L1 | 3 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.1158524 | 0.0801916 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | M.L2 | 3 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.2151078 | 0.0872961 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | M.Historical | 3 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.0321349 | 0.0825955 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | M.PresentElder | 3 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.3821925 | 0.0666317 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | F.L1 | 3 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.4956332 | 0.0797564 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | F.L2 | 3 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.2645472 | 0.0863811 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | F.Historical | 3 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.2294903 | 0.0866463 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | F.PresentElder | 3 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.0424523 | 0.0642096 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | M.L1 | 4 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.3453885 | 0.0669708 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | M.L2 | 4 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.1118357 | 0.0731030 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | M.Historical | 4 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.2915026 | 0.0722450 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | M.PresentElder | 4 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.1940384 | 0.0536898 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | F.L1 | 4 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.7088342 | 0.0664230 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | F.L2 | 4 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.4770963 | 0.0734504 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | F.Historical | 4 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.4230145 | 0.0751549 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | F.PresentElder | 4 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.2118795 | 0.0500746 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | M.L1 | 5 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.4866634 | 0.0639868 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | M.L2 | 5 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.0549818 | 0.0697623 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | M.Historical | 5 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.4608548 | 0.0704539 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | M.PresentElder | 5 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.0012640 | 0.0506561 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | F.L1 | 5 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.8352572 | 0.0635549 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | F.L2 | 5 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.6105533 | 0.0708046 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | F.Historical | 5 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.5451461 | 0.0729696 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | F.PresentElder | 5 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.3109398 | 0.0468985 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | M.L1 | 6 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.5322444 | 0.0660415 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | M.L2 | 6 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.2445476 | 0.0723522 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | M.Historical | 6 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.5579220 | 0.0729575 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | M.PresentElder | 6 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.1764333 | 0.0530143 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | F.L1 | 6 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.8368582 | 0.0654949 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | F.L2 | 6 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.6776683 | 0.0729750 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | F.Historical | 6 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.5789605 | 0.0758442 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | F.PresentElder | 6 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.3728042 | 0.0496334 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | M.L1 | 7 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.5576756 | 0.0770342 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | M.L2 | 7 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.3889501 | 0.0831100 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | M.Historical | 7 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.6269177 | 0.0834919 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | M.PresentElder | 7 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.3230213 | 0.0637279 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | F.L1 | 7 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.7942745 | 0.0762240 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | F.L2 | 7 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.6987913 | 0.0838203 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | F.Historical | 7 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.5414097 | 0.0871329 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | F.PresentElder | 7 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.3926049 | 0.0619279 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | M.L1 | 8 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.5510397 | 0.1104254 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | M.L2 | 8 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.4701912 | 0.1158211 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | M.Historical | 8 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.6921493 | 0.1179292 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | M.PresentElder | 8 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.4219218 | 0.0951897 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | F.L1 | 8 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.6964216 | 0.1099409 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | F.L2 | 8 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.6920777 | 0.1175566 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | F.Historical | 8 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.4022273 | 0.1217710 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | F.PresentElder | 8 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.4102104 | 0.0968117 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | M.L1 | 9 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.6296186 | 0.1830740 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | M.L2 | 9 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.5011316 | 0.1880490 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | M.Historical | 9 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.7598430 | 0.1928843 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | M.PresentElder | 9 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.4827180 | 0.1613996 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | F.L1 | 9 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.6154694 | 0.1837967 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | F.L2 | 9 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.6773166 | 0.1891224 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | F.Historical | 9 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.2387281 | 0.1983891 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F1_lobanov_2.0 | F.PresentElder | 9 | 0.12 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | 0.3830130 | 0.1688658 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | M.L1 | 1 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -1.0248478 | 0.1916328 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | M.L2 | 1 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.8182464 | 0.2498812 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | M.Historical | 1 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -1.2013576 | 0.0986634 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | M.PresentElder | 1 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -1.0358430 | 0.0896264 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | F.L1 | 1 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -1.2345260 | 0.2175854 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | F.L2 | 1 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -1.2511930 | 0.2083782 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | F.Historical | 1 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -1.2515073 | 0.1582345 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | F.PresentElder | 1 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -1.2851035 | 0.1064506 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | M.L1 | 2 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -1.0682566 | 0.1111785 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | M.L2 | 2 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.9799381 | 0.1386864 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | M.Historical | 2 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -1.1592437 | 0.0742018 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | M.PresentElder | 2 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -1.0241752 | 0.0611146 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | F.L1 | 2 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -1.2351645 | 0.1226557 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | F.L2 | 2 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -1.1793635 | 0.1223270 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | F.Historical | 2 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -1.2286091 | 0.1016769 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | F.PresentElder | 2 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -1.2319000 | 0.0662173 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | M.L1 | 3 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -1.0505126 | 0.0658711 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | M.L2 | 3 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -1.0316775 | 0.0802531 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | M.Historical | 3 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -1.0835803 | 0.0567484 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | M.PresentElder | 3 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.9787598 | 0.0428600 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | F.L1 | 3 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -1.1657437 | 0.0708119 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | F.L2 | 3 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -1.0568807 | 0.0732706 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | F.Historical | 3 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -1.1694975 | 0.0664450 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | F.PresentElder | 3 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -1.1401245 | 0.0420970 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | M.L1 | 4 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.9875505 | 0.0475574 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | M.L2 | 4 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.9921835 | 0.0567273 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | M.Historical | 4 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.9986713 | 0.0461253 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | M.PresentElder | 4 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.9220610 | 0.0336429 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | F.L1 | 4 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -1.0525109 | 0.0497520 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | F.L2 | 4 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.9127804 | 0.0533818 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | F.Historical | 4 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -1.0926896 | 0.0506018 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | F.PresentElder | 4 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -1.0435819 | 0.0315704 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | M.L1 | 5 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.8975487 | 0.0424258 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | M.L2 | 5 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.8955316 | 0.0495966 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | M.Historical | 5 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.9028343 | 0.0422133 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | M.PresentElder | 5 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.8510269 | 0.0307636 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | F.L1 | 5 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.9322567 | 0.0435172 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | F.L2 | 5 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.7776602 | 0.0478109 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | F.Historical | 5 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.9924274 | 0.0462904 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | F.PresentElder | 5 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.9440709 | 0.0287744 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | M.L1 | 6 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.7964543 | 0.0437970 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | M.L2 | 6 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.7786856 | 0.0503788 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | M.Historical | 6 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.7980587 | 0.0449497 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | M.PresentElder | 6 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.7702006 | 0.0326836 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | F.L1 | 6 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.8412302 | 0.0447468 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | F.L2 | 6 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.6650387 | 0.0491906 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | F.Historical | 6 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.8715324 | 0.0485159 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | F.PresentElder | 6 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.8410327 | 0.0305975 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | M.L1 | 7 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.6798461 | 0.0535525 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | M.L2 | 7 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.6642930 | 0.0598985 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | M.Historical | 7 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.6858195 | 0.0541525 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | M.PresentElder | 7 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.6836344 | 0.0401709 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | F.L1 | 7 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.7510732 | 0.0547514 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | F.L2 | 7 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.5808619 | 0.0593235 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | F.Historical | 7 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.7409180 | 0.0587837 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | F.PresentElder | 7 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.7328884 | 0.0388505 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | M.L1 | 8 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.6055793 | 0.0813179 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | M.L2 | 8 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.5546495 | 0.0891052 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | M.Historical | 8 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.5897870 | 0.0697763 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | M.PresentElder | 8 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.6149859 | 0.0556255 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | F.L1 | 8 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.7136961 | 0.0838022 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | F.L2 | 8 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.5244095 | 0.0881638 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | F.Historical | 8 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.6401956 | 0.0836098 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | F.PresentElder | 8 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.6426536 | 0.0586883 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | M.L1 | 9 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.5692751 | 0.1343728 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | M.L2 | 9 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.5163865 | 0.1510082 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | M.Historical | 9 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.5166009 | 0.0920063 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | M.PresentElder | 9 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.5680177 | 0.0803927 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | F.L1 | 9 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.6900471 | 0.1417363 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | F.L2 | 9 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.5083041 | 0.1433018 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | F.Historical | 9 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.5708115 | 0.1261188 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
| ua | F2_lobanov_2.0 | F.PresentElder | 9 | 0.13 | 0.0694835 | k F.PresentElder | 0.0694835 | $k F.PresentElder | -0.5756487 | 0.0926003 | s(time_left,preceding_category_gender),s(time_right,following_category_gender) |
- Format predictions
Click here to view code.
predictions <- predictions %>%
select( # Remove unneeded variables
-CI, -duration, -time_left, -time_right, -preceding_category_gender, -following_category_gender, -rm.ranef
) %>%
pivot_wider( # Pivot
names_from = Formant,
values_from = fit
)
predictions %>%
head() %>%
kable() %>%
kable_styling() %>%
scroll_box(width = "100%")| Vowel | category_gender | time | F1_lobanov_2.0 | F2_lobanov_2.0 |
|---|---|---|---|---|
| ea | M.L1 | 1 | 0.3001625 | 0.4922088 |
| ea | M.L2 | 1 | -0.1640612 | 0.9291806 |
| ea | M.Historical | 1 | 0.7094868 | 0.6521965 |
| ea | M.PresentElder | 1 | 0.2734123 | 0.6664922 |
| ea | F.L1 | 1 | 0.2205627 | 0.5966031 |
| ea | F.L2 | 1 | -0.2211095 | 0.8688500 |
Click here to view code.
predictions <- predictions %>%
mutate(category = str_remove(category_gender, ".*[.]"),
participant_gender = str_remove(category_gender, "[.].*"),)- Prepare data sets for each speaker category
Click here to view code.
PresentElderseq = predictions %>%
filter(category == "PresentElder")
Historicalseq = predictions %>%
filter(category == "Historical")
L1seq = predictions %>%
filter(category == "L1")
L2seq = predictions %>%
filter(category == "L2")
PresentEldermono = monophthongs %>%
filter(category == "PresentElder")
Historicalmono = monophthongs %>%
filter(category == "Historical")
L1mono = monophthongs %>%
filter(category == "L1")
L2mono = monophthongs %>%
filter(category == "L2")
presentfirst_obs <- PresentElderseq %>%
group_by(Vowel, participant_gender) %>%
slice(which.min(time))
histfirst_obs <- Historicalseq %>%
group_by(Vowel, participant_gender) %>%
slice(which.min(time))
L1first_obs <- L1seq %>%
group_by(Vowel, participant_gender) %>%
slice(which.min(time))
L2first_obs <- L2seq %>%
group_by(Vowel, participant_gender) %>%
slice(which.min(time))##Historical elders plot
- Calculate the mean for each vowel to annotate ellipses on plot
Click here to view code.
Hist_i_means <- Historicalmono %>%
filter(Target.teAkaSegment == "i") %>%
mutate(meanF1 = mean(F1_lobanov_2.0)) %>%
mutate(meanF2 = mean(F2_lobanov_2.0)) %>%
select(Target.teAkaSegment, meanF1, meanF2) %>%
unique()
Hist_e_means <- Historicalmono %>%
filter(Target.teAkaSegment == "e") %>%
mutate(meanF1 = mean(F1_lobanov_2.0)) %>%
mutate(meanF2 = mean(F2_lobanov_2.0)) %>%
select(Target.teAkaSegment, meanF1, meanF2) %>%
unique()
Hist_a_means <- Historicalmono %>%
filter(Target.teAkaSegment == "a") %>%
mutate(meanF1 = mean(F1_lobanov_2.0)) %>%
mutate(meanF2 = mean(F2_lobanov_2.0)) %>%
select(Target.teAkaSegment, meanF1, meanF2) %>%
unique()
Hist_o_means <- Historicalmono %>%
filter(Target.teAkaSegment == "o") %>%
mutate(meanF1 = mean(F1_lobanov_2.0)) %>%
mutate(meanF2 = mean(F2_lobanov_2.0)) %>%
select(Target.teAkaSegment, meanF1, meanF2) %>%
unique()
Hist_u_means <- Historicalmono %>%
filter(Target.teAkaSegment == "u") %>%
mutate(meanF1 = mean(F1_lobanov_2.0)) %>%
mutate(meanF2 = mean(F2_lobanov_2.0)) %>%
select(Target.teAkaSegment, meanF1, meanF2) %>%
unique()
Historicalmono_means <- rbind(Hist_i_means, Hist_e_means, Hist_a_means, Hist_o_means, Hist_u_means) %>%
rename(F1_lobanov_2.0 = meanF1) %>%
rename(F2_lobanov_2.0 = meanF2)- Create plot
Click here to view code.
hist_plot <- Historicalmono %>%
ggplot(aes(x = F2_lobanov_2.0, y = F1_lobanov_2.0, colour = Target.teAkaSegment)) +
stat_ellipse(level = 0.67, geom = "polygon", alpha = 0.1, aes(fill = Target.teAkaSegment), show.legend = FALSE) +
scale_x_reverse() + scale_y_reverse() +
geom_text(data=Historicalmono_means,
aes(x = F2_lobanov_2.0, y = F1_lobanov_2.0, label = Target.teAkaSegment), show.legend = FALSE, size = 3) +
geom_path(data=Historicalseq, aes(
x = F2_lobanov_2.0,
y = F1_lobanov_2.0,
colour = Vowel), arrow = arrow(length = unit(2, "mm")), show.legend = FALSE) +
geom_label(
data = histfirst_obs,
aes(
x = F2_lobanov_2.0,
y = F1_lobanov_2.0,
colour = Vowel, label=Vowel),
show.legend = FALSE,
size = 2.5, # Make labels smaller...
alpha = 0.7 # ...and slightly transparent.
)
hist_gender <- hist_plot + labs(title = "Historical elders") + facet_grid(~ participant_gender) + theme_classic()+
theme( text = element_text(size = 8))
hist_gender11.1 Present elders plot
- Calculate the mean for each vowel to annotate ellipses on plot
Click here to view code.
PE_i_means <- PresentEldermono %>%
filter(Target.teAkaSegment == "i") %>%
mutate(meanF1 = mean(F1_lobanov_2.0)) %>%
mutate(meanF2 = mean(F2_lobanov_2.0)) %>%
select(Target.teAkaSegment, meanF1, meanF2) %>%
unique()
PE_e_means <- PresentEldermono %>%
filter(Target.teAkaSegment == "e") %>%
mutate(meanF1 = mean(F1_lobanov_2.0)) %>%
mutate(meanF2 = mean(F2_lobanov_2.0)) %>%
select(Target.teAkaSegment, meanF1, meanF2) %>%
unique()
PE_a_means <- PresentEldermono %>%
filter(Target.teAkaSegment == "a") %>%
mutate(meanF1 = mean(F1_lobanov_2.0)) %>%
mutate(meanF2 = mean(F2_lobanov_2.0)) %>%
select(Target.teAkaSegment, meanF1, meanF2) %>%
unique()
PE_o_means <- PresentEldermono %>%
filter(Target.teAkaSegment == "o") %>%
mutate(meanF1 = mean(F1_lobanov_2.0)) %>%
mutate(meanF2 = mean(F2_lobanov_2.0)) %>%
select(Target.teAkaSegment, meanF1, meanF2) %>%
unique()
PE_u_means <- PresentEldermono %>%
filter(Target.teAkaSegment == "u") %>%
mutate(meanF1 = mean(F1_lobanov_2.0)) %>%
mutate(meanF2 = mean(F2_lobanov_2.0)) %>%
select(Target.teAkaSegment, meanF1, meanF2) %>%
unique()
PresentEldermono_means <- rbind(PE_i_means, PE_e_means, PE_a_means, PE_o_means, PE_u_means) %>%
rename(F1_lobanov_2.0 = meanF1) %>%
rename(F2_lobanov_2.0 = meanF2)- Create plot
Click here to view code.
present_plot <- PresentEldermono %>%
ggplot(aes(x = F2_lobanov_2.0, y = F1_lobanov_2.0, colour = Target.teAkaSegment)) +
stat_ellipse(level = 0.67, geom = "polygon", alpha = 0.1, aes(fill = Target.teAkaSegment), show.legend = FALSE) +
scale_x_reverse() + scale_y_reverse() +
geom_text(data= PresentEldermono_means,
aes(x = F2_lobanov_2.0, y = F1_lobanov_2.0, label = Target.teAkaSegment), show.legend = FALSE, size = 3) +
geom_path(data=PresentElderseq, aes(
x = F2_lobanov_2.0,
y = F1_lobanov_2.0,
colour = Vowel), arrow = arrow(length = unit(2, "mm")), show.legend = FALSE) +
geom_label(
data = presentfirst_obs,
aes(
x = F2_lobanov_2.0,
y = F1_lobanov_2.0,
colour = Vowel, label=Vowel),
show.legend = FALSE,
size = 2.5, # Make labels smaller...
alpha = 0.7 # ...and slightly transparent.
)
present_gender <- present_plot + labs(title = "Present elders") + facet_grid(~ participant_gender) + theme_classic()+
theme( text = element_text(size = 8))
present_gender11.2 L1 plot
- Calculate the mean for each vowel to annotate ellipses on plot
Click here to view code.
L1_i_means <- L1mono %>%
filter(Target.teAkaSegment == "i") %>%
mutate(meanF1 = mean(F1_lobanov_2.0)) %>%
mutate(meanF2 = mean(F2_lobanov_2.0)) %>%
select(Target.teAkaSegment, meanF1, meanF2) %>%
unique()
L1_e_means <- L1mono %>%
filter(Target.teAkaSegment == "e") %>%
mutate(meanF1 = mean(F1_lobanov_2.0)) %>%
mutate(meanF2 = mean(F2_lobanov_2.0)) %>%
select(Target.teAkaSegment, meanF1, meanF2) %>%
unique()
L1_a_means <- L1mono %>%
filter(Target.teAkaSegment == "a") %>%
mutate(meanF1 = mean(F1_lobanov_2.0)) %>%
mutate(meanF2 = mean(F2_lobanov_2.0)) %>%
select(Target.teAkaSegment, meanF1, meanF2) %>%
unique()
L1_o_means <- L1mono %>%
filter(Target.teAkaSegment == "o") %>%
mutate(meanF1 = mean(F1_lobanov_2.0)) %>%
mutate(meanF2 = mean(F2_lobanov_2.0)) %>%
select(Target.teAkaSegment, meanF1, meanF2) %>%
unique()
L1_u_means <- L1mono %>%
filter(Target.teAkaSegment == "u") %>%
mutate(meanF1 = mean(F1_lobanov_2.0)) %>%
mutate(meanF2 = mean(F2_lobanov_2.0)) %>%
select(Target.teAkaSegment, meanF1, meanF2) %>%
unique()
L1mono_means <- rbind(L1_i_means, L1_e_means, L1_a_means, L1_o_means, L1_u_means) %>%
rename(F1_lobanov_2.0 = meanF1) %>%
rename(F2_lobanov_2.0 = meanF2)- Create plot
Click here to view code.
L1_plot <- L1mono %>%
ggplot(aes(x = F2_lobanov_2.0, y = F1_lobanov_2.0, colour = Target.teAkaSegment)) +
stat_ellipse(level = 0.67, geom = "polygon", alpha = 0.1, aes(fill = Target.teAkaSegment), show.legend = FALSE) +
scale_x_reverse() + scale_y_reverse() +
geom_text(data=L1mono_means,
aes(x = F2_lobanov_2.0, y = F1_lobanov_2.0, label = Target.teAkaSegment), show.legend = FALSE, size = 3) +
geom_path(data=L1seq, aes(
x = F2_lobanov_2.0,
y = F1_lobanov_2.0,
colour = Vowel), arrow = arrow(length = unit(2, "mm")), show.legend = FALSE) +
geom_label(
data = L1first_obs,
aes(
x = F2_lobanov_2.0,
y = F1_lobanov_2.0,
colour = Vowel, label=Vowel),
show.legend = FALSE,
size = 2.5, # Make labels smaller...
alpha = 0.7 # ...and slightly transparent.
)
L1_gender <- L1_plot + labs(title = "Young L1") + facet_grid(~ participant_gender) + theme_classic()+
theme( text = element_text(size = 8))
L1_gender11.3 L2 plot
- Calculate the mean for each vowel to annotate ellipses on plot
Click here to view code.
L2_i_means <- L2mono %>%
filter(Target.teAkaSegment == "i") %>%
mutate(meanF1 = mean(F1_lobanov_2.0)) %>%
mutate(meanF2 = mean(F2_lobanov_2.0)) %>%
select(Target.teAkaSegment, meanF1, meanF2) %>%
unique()
L2_e_means <- L2mono %>%
filter(Target.teAkaSegment == "e") %>%
mutate(meanF1 = mean(F1_lobanov_2.0)) %>%
mutate(meanF2 = mean(F2_lobanov_2.0)) %>%
select(Target.teAkaSegment, meanF1, meanF2) %>%
unique()
L2_a_means <- L2mono %>%
filter(Target.teAkaSegment == "a") %>%
mutate(meanF1 = mean(F1_lobanov_2.0)) %>%
mutate(meanF2 = mean(F2_lobanov_2.0)) %>%
select(Target.teAkaSegment, meanF1, meanF2) %>%
unique()
L2_o_means <- L2mono %>%
filter(Target.teAkaSegment == "o") %>%
mutate(meanF1 = mean(F1_lobanov_2.0)) %>%
mutate(meanF2 = mean(F2_lobanov_2.0)) %>%
select(Target.teAkaSegment, meanF1, meanF2) %>%
unique()
L2_u_means <- L2mono %>%
filter(Target.teAkaSegment == "u") %>%
mutate(meanF1 = mean(F1_lobanov_2.0)) %>%
mutate(meanF2 = mean(F2_lobanov_2.0)) %>%
select(Target.teAkaSegment, meanF1, meanF2) %>%
unique()
L2mono_means <- rbind(L2_i_means, L2_e_means, L2_a_means, L2_o_means, L2_u_means) %>%
rename(F1_lobanov_2.0 = meanF1) %>%
rename(F2_lobanov_2.0 = meanF2)- Create plot
Click here to view code.
L2_plot <- L2mono %>%
ggplot(aes(x = F2_lobanov_2.0, y = F1_lobanov_2.0, colour = Target.teAkaSegment)) +
stat_ellipse(level = 0.67, geom = "polygon", alpha = 0.05, aes(fill = Target.teAkaSegment), show.legend = FALSE) +
scale_x_reverse() + scale_y_reverse() +
geom_text(data=L2mono_means,
aes(x = F2_lobanov_2.0, y = F1_lobanov_2.0, label = Target.teAkaSegment), show.legend = FALSE, size = 3) +
geom_path(data=L2seq, aes(
x = F2_lobanov_2.0,
y = F1_lobanov_2.0,
colour = Vowel), arrow = arrow(length = unit(2, "mm")), show.legend = FALSE) +
geom_label(
data = L2first_obs,
aes(
x = F2_lobanov_2.0,
y = F1_lobanov_2.0,
colour = Vowel, label=Vowel),
show.legend = FALSE,
size = 2.5, # Make labels smaller...
alpha = .7 # ...and slightly transparent.
)
L2_gender <- L2_plot + labs(title = "Young L2") +facet_grid(~ participant_gender) + theme_classic() +
theme( text = element_text(size = 8))
L2_gender11.4 Combined plot (Manuscript Figure 15 )
Click here to view code.
plots_combined <- cowplot::plot_grid(hist_gender, present_gender,
L1_gender, L2_gender,
labels = c("a", "b", "c", "d"), label_size = 10, ncol = 2, align = "c", axis = "l")
plots_combined Click here to view code.
ggsave(here("public", "Figures", "ChangeOverTime", "combined_plots_change.pdf"), width = 22, height = 14, units = "cm")